1樓:文件類共創空間
你要知道,float是浮點數,無法精確表示一個數值。所以你根本不可能在float內部精確表示一些小數,比如0.7或者你說的0.32。
有興趣的話可以研究下ieee754標準,這個標準規定了電腦中浮點數如何儲存,看完了你就會明白,這些小數在電腦中儲存的時候都是轉換成二進位制儲存的,而0.32和0.7這種小數,在十進位制下是有限小數,但轉換成二進位制之後就是無限迴圈小數了,所以是無法精確用float表示的。
你只能在float內部儲存一個很接近的近似值。
在**中也不應該寫:if (a == 0.7) 這種語句,因為浮點數a是無法精確表示0.7的,應該寫成:
if (math.abs(a - 0.7) < ***) 其中***是一個足夠小的數。
當然你在輸出的時候是可以將這個float a輸出成兩位小數的,比如a.tostring("f2");這樣輸出的時候會將a的值十進位制小數點後2位之後進行四捨五入然後輸出,但是a本身的值仍然是無法保證精確只有兩位小數的。
-------------
補充:我知道你是要從string轉float,不過原因我已經說了,這是float內部儲存方式的問題,不是轉換的問題,浮點數本來就無法精確儲存一些小數,這個是沒辦法的。這也就是為什麼許多涉及到金融業務的程式都採用的是定點數來儲存金額等數字,而不是採用浮點數的原因。
2樓:匿名使用者
printf("%.2f",變數);
c#如何將float型別數值保留兩位小數?
3樓:哼哈嗯嗯
1、float y =8.60000000000000000;
string s = y.tostring("f2");
2、%.2f是保留兩位小數
%.3f是保留三位小數
3、c#裡面有個math.round()函式,math.round(a,2)就是保留2位小數
如何讓float型保留兩位小數
4樓:馬連枝桂雁
這個辦法很多啦,大部分程式語言都提供保留小數的函式,呼叫下就行,或者你自己寫個演算法也很簡單,大致給你個思路,你把你的float*100,然後轉成int型別,多餘的小數位就沒有了,然後再/100就是你要的保留兩位小數的效果了。
5樓:進愷乜弘新
float都儲存的是2進位制近似值,所以不存在保留十進位制幾位小數的情況。
所謂保留幾位小數,都是用於十進位制顯示時的顯示格式。
system.out.format("%.2f",0.12345f);
//顯示時保留2位小數
system.out.println(string.format("%.2f",
0.12345f));//或,轉換成2位小數字串後顯示。
如何讓float變數精確到小數點後兩位
6樓:day好樣的活寶
一個double或者float變數x四捨五入取整,可以(int)(x+0.5); 同理,如果要保留小數點後兩位 (int)(100*x+0.5) * 0.01 ;
7樓:2016_笑傲江湖
可以計算時使用整型把結果擴大到要保留的小數點位數,結果再*0.0……01縮小回目標小數點位數,獲取到目標小數點精度。
8樓:逆心小土豆
可以在輸出時,指定小數點後的有效位數,實現精確到若干位的效果。
要精確到小數點後若干位,則資料型別為浮點型,可能為單精度(float)或雙精度(double)。
在c語言中,使用格式化輸出函式printf來實現輸出。
輸出格式為
%.nf
1 %為格式化字串的引導字元。
2 .n表示指定顯示n位小數。
3 f為型別字元,對於float, f值為f, 對於double,f值為lf。
舉例:1 要輸出float a=1.23234; 保留3位小數的寫法為:
printf("%.3f",a);
2 輸出double b=123.345232; 保留4為小數,寫法為:
printf("%.4lf",b);
c如何將float型別數值保留兩位小數
我叫啥 程式例程如下 double x 6.50000000000 float y float.parse x.tostring console.writeline y.tostring f2 以上程式將x值賦給y,y保留兩位小數。 果建翼 你要知道,float是浮點數,無法精確表示一個數值。所以你...
3 126 0 9保留兩位小數,9 358保留兩位小數是?
七色彩虹之毛毛 解 3.126 0.9約等於 2.81 已知需求出3.126 0.9等於多少 x y x y z 3.126 0.9 3 1000 126 1000 9 10 3126 1000 9 10 1563 500 9 10 14067 5000 2.8134 2.81 答 3.126 0....
0 728 0 43保留兩位小數如何計算
聆聽萬物 計算豎式72800 43 解題思路 將被除數從高位起的每一位數進行除數運算,每次計算得到的商保留,餘數加下一位數進行運算,依此順序將被除數所以位數運算完畢,得到的商按順序組合,餘數為最後一次運算結果 解題過程 步驟一 72 43 1 餘數為 29 步驟二 298 43 6 餘數為 40 步...