關於c中double轉int的問題,為什麼會少

2021-03-04 08:48:57 字數 988 閱讀 9322

1樓:陽光的雷咩咩

用math下面的函式

:double d1 = 1.1d;

int i1f = (int)math.floor(d1);//1int i1c = (int)math.ceiling(d1);//2

int i1r = (int)math.round(d1);//1double d9 = 1.9d;

int i9f = (int)math.floor(d9);//1int i9c = (int)math.ceiling(d9);//2

int i9r = (int)math.round(d9);//2

c# 中計算 double 型別時出錯,,0.1*0.1 為什麼不是等於0.01

2樓:匿名使用者

在我這裡除錯怎麼沒問題。。。

也是c#

double a = 0.1;

double i = a * a;

或者i = 0.1 * 0.1;結果都是0.01

3樓:

浮點比較式不能用等於判斷的。。。計算機處理的時候是會出現偏差的。。。一般都是設定乙個偏差值比較。。。

計算機的本身的限制沒有辦法。。。如果是確定了精度的話可以取整比較,不過是會有點偏差的

假設你的數值精度只有小數點後3位,那就直接四捨五入到小點後三位,然後作為字串比較或者乘1000取整比較

4樓:線玉蘭秋汝

兩個不同資料型別做運算就會出現這種問題,有些時候,即使相同資料型別也會

主要就是計算機各資料型別精度問題

所以,如果你想要25

*0.0001

=0.00025

就把2個數字全都付給double型變數

doublet1=

25;doublet2=

0.0001;

doublem=

t1*t2;m就是你想要的

C語言中double和int型的資料之間可相互賦值

可以。如 double a 1.2 int b b a b 1 取整了 int a 1 double b b a b 1.00000 1 double 雙精度浮點型 是計算機使用的一種資料型別。比起單精度浮點數 float double 雙精度浮點數 使用 64 位 8位元組 來儲存乙個浮點數。2 ...

c語言裡,double和int在開頭都是定義嗎?有啥區別

double表示的是浮點數,範圍大,但值是近似值。int只能表示整型。定義的話,最原始的c要求 所有變數都要在 塊開頭定義不過後來放寬了 現在幾乎所有的編譯器 都是可以在函式中間定義變數了。c語言double和int有什麼區別,各個表示範圍是多少,double可以表示負數嗎 區別 double雙精度...

c語言中int型與double型能進行換算加減乘除嗎

能進bai行,不會錯,系統實際會把du參加運zhi算的所有變數轉換為double後進dao行計算專,只要表示式屬裡面有乙個float或者double的量,例如 int i 1 float x 5,y y x i 執行的時候系統會把x和i都轉換為double進行計算,最後的結果再儲存為y的double...