如何讓float變數精確到小數點後兩位

時間 2021-08-30 10:36:00

1樓:day好樣的活寶

乙個double或者float變數x四捨五入取整,可以(int)(x+0.5); 同理,如果要保留小數點後兩位 (int)(100*x+0.5) * 0.01 ;

2樓:2016_笑傲江湖

可以計算時使用整型把結果擴大到要保留的小數點位數,結果再*0.0……01縮小回目標小數點位數,獲取到目標小數點精度。

3樓:逆心小土豆

可以在輸出時,指定小數點後的有效位數,實現精確到若干位的效果。

要精確到小數點後若干位,則資料型別為浮點型,可能為單精度(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);

如何讓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樓:文件類共創空間

你要知道,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內部儲存方式的問題,不是轉換的問題,浮點數本來就無法精確儲存一些小數,這個是沒辦法的。這也就是為什麼許多涉及到金融業務的程式都採用的是定點數來儲存金額等數字,而不是採用浮點數的原因。

7樓:匿名使用者

printf("%.2f",變數);

怎麼使float數強制保留小數點後2位

8樓:追憶小土豆

float都儲存的是2進製近似值,所以不存在保留十進位制幾位小數的情況。

所謂保留幾位小數,都是用於十進位制顯示時的顯示格式。

system.out.format("%.2f", 0.12345f); //顯示時保留2位小數

system.out.println(string.format("%.2f", 0.12345f));//或,轉換成2位小數字串後顯示。

9樓:君莫舞君莫舞

不太清楚你用的是什麼語言。如果是vba的話,可以roundup()

如果檢視float型別的變數小數點後有幾位數

飛花的月 預設六位小數,不夠就補零,比如講1賦給浮點型變數a,輸出是1.000000 year蘇張楊 理論上是6位,但是輸出時,可以限制小數位。 金色潛鳥 可以檢視,例如,用sprintf,轉成字串,一個字元一個字元地統計。但得到的結果不一定可靠,或不是期望的。原因是 計算機內部用 2進位制,我們輸...

怎樣取float的前兩位小數,如何讓float變數精確到小數點後兩位

是獲取如12.345678中間的3,4嗎?include using namespace std void main 怎樣取float的前兩位小數 兄弟連教育 先用乘法,再bai用取整,最後用除du法。例如zhi小數0.123456,先求dao0.123456 100 12.3456,用取整版 四捨...

plc模擬量能夠精確到小數點第幾位

解析度的解釋 舉例來說,11位的解析度,就是你量程最大值除以2的11次方,得到的就是最小變化值 測量值是0 10v的話,14位解析度就是10v除以2的14次方,得到的值就是最小的變化值,當變化超過了該值,plc就會檢測到並更新,若變化範圍小於該值,plc則認為測量值沒有變化,分辨不出來。你所說的是怎...