坑人的浮點數 小數點後的位數。

2021-06-23 09:27:13 字數 456 閱讀 9070

今天乙個看似簡單的問題,折磨了人一下午。——輸入乙個小數,輸出小數點後有幾位。

於是我天真的用了小學知識。

double a;

for (i=0;a-(int)a<1e-8;i++)

a*=10;

cout<

好可愛的想法。。。。。

錯誤的地方:1,在計算機中浮點數是有誤差的 

原因:     1,浮點數用2進製表示,有一些10進製數用2進製是無法準確表示的,只能近視表示。

2,浮點是在運算過程中小數末尾會因為數字的不同進行捨去。

導致:     1,10進製輸入進去的資料,在計算機里成了迴圈的小數。這就for迴圈的導致條件永遠成立。

2,導致我在上面浪費了一下午的時間

正確的處理方法:

1,不要在意小數字數有多少,只要關心有效數字。

2,高精度的乘法用陣列模擬。           

擷取浮點數小數點後指定位數的一種做法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!cpp view plain copy print?brief 對浮點數四捨五入後指定位數輸出 param dbnum in 待處理的浮點數 param decplaces in 小數點後的位數 return 輸出字串 std string num...

在Cout 輸出浮點資料裡控制小數點後數字位數

如下 std cout std setiosflags std ios fixed std cout vcut std endl std cout std setprecision 6 esvlm.cutvolume std endl std cout vfill std endl std cout...

c 保留小數點後位數的方法

c 保留小數點後位數的方法 double dvalue 95.12345 int ivalue 10000 string strvalue 95.12345 string result result convert.todouble dvalue tostring 0.00 保留小數點後兩位,結果為...