[問題] 在寫入與輸出電腦間 數字的精度變了!

看板C_and_CPP (C/C++)作者 (快樂就好)時間14年前 (2011/12/17 15:15), 編輯推噓6(605)
留言11則, 7人參與, 最新討論串1/1
#include <cstdio> int main() { float num; scanf("%f",&num); printf("%f",num); system("pause"); return 0; } 譬如我輸入23.3,為什麼螢幕顯示的是23.299999? 該怎麼修正程式碼?謝謝解答囉。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.103.153 ※ 編輯: eagle32 來自: 140.109.103.153 (12/17 15:16)

12/17 15:43, , 1F
printf("%.1f ",num);
12/17 15:43, 1F

12/17 16:04, , 2F
如果事先不知input的數字的精確度 你的方法就行不通了
12/17 16:04, 2F

12/17 16:35, , 3F
置底十三誡之十一的那個連結先去整篇看過
12/17 16:35, 3F

12/17 16:36, , 4F
另外其實這種讀法永遠不會知道使用者輸入的精確度是多少
12/17 16:36, 4F

12/17 16:47, , 5F
先看點程式設計的書吧
12/17 16:47, 5F

12/17 16:51, , 6F
請問樓上的意思是...?要看那些書呢?
12/17 16:51, 6F

12/17 16:59, , 7F
不考慮存成string?
12/17 16:59, 7F

12/17 17:01, , 8F
不是不考慮是太嫩沒想到還有什麼靈活的作法 = =
12/17 17:01, 8F

12/17 17:04, , 9F
"數字的精度變了" 所以你是用數字的觀點看它
12/17 17:04, 9F

12/17 17:20, , 10F
應該是10進位和2進位制的誤差吧
12/17 17:20, 10F

12/18 16:54, , 11F
這個是浮點數誤差,google一下就能瞭解吧。
12/18 16:54, 11F
文章代碼(AID): #1Ex46WZ8 (C_and_CPP)
文章代碼(AID): #1Ex46WZ8 (C_and_CPP)