關於1.01+1.02
著名的問題,它是2.0300000000000002
數字和toFixed,toPrecision在Javascript中?
的解決方法之一是使用toFixed
:例如
(1.01+1.02).toFixed(2) --->"2.03"
但我看到toPrecision解決
parseFloat((1.01+1.02).toPrecision(10))-->"2.03"
但是讓我們看看n
在
toFixed(n)
toPrecision(n)
我怎麼知道什麼是n?
0.xxxxxxxxxxx
+
0.yyyyyyyyyyyyy
---------------------
0.zzzzzzzzzzzzzzzzzzzzzzzzz
^
|
-----??????------
添加的每個號碼都可以有不同的小數位數...
例如:
1.0002+1.01+1.03333
- > 3.0435300000000005
我將如何計算這裏的n
?這個(特定)問題的最佳做法是什麼?
我從來不知道這個問題的存在...也許像'的ToString()。length'可以用來獲得最長數字的長度,用在'.toPrecision(n)'中? – Cerbrus
爲什麼你想「弄清楚」'n'?當我向用戶輸出值時,我只會應用'toFixed'和好友,在這種情況下,我會根據需要多少小數位的情況做出決定。 – phant0m
@ phant0m我認爲這是因爲他想知道計算的真正價值,而不是讓額外數字浮點固有地增加。他可能只是想以最小的精度顯示它,能夠顯示計算的確切值。 –