亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

100*(0.002812.toFixed(4)) ==0.27999999999999997?

100*(0.002812.toFixed(4)) ==0.27999999999999997?

翻閱古今 2019-03-21 18:14:52
想對數字截取后轉為百分比,居然100*(0.002812.toFixed(4))不是0.28?
查看完整描述

2 回答

?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

進行*100運算的時候,toFixed()得到的string 已經隱式轉換變成number。

然后二進制數不能精確表示0.0028 (1.01101111..._2×2^-9),也不能精確表示0.28 (0.010001111010111..._2x2^0)所以只好截取掉一部分。

這樣應該可以(100*0.002812).toFixed(2)


查看完整回答
反對 回復 2019-04-13
?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

浮點數不能精確表示,是所有編程語言共有的問題。因為浮點數在計算機內部也是用二進制存儲的。
所以一位小數,比如0.1-0.9中只有0.5是可以精確表示的,因為0.5是1的一半。

所以一般涉及金融行業和錢相關的敏感數據存儲,幾分錢,幾毛錢都是用整數來存的。

推薦一篇博客吧,題主有興趣可以看一看~。代碼之謎(五)- 浮點數(誰偷了你的精度?)


查看完整回答
反對 回復 2019-04-13
  • 2 回答
  • 0 關注
  • 945 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號