10000000000000.126.toString()
1000000000000.127と100000000000.126.toString()
はなぜですか?なぜ10000000000000.126.toString()が1000000000000.127(そしてそれを防ぐために何ができますか)ですか?
私はJsの数値の最大値と何か関係があると思いますが(this SO question)、それは浮動小数点演算に関連していますか?
私は桁区切り文字を使用して数値をフォーマットするためにこの関数を書いたので、これを避けたいと思っています。
alert(0.1 + 0.2); // "0.30000000000000004"
全て番号:すべての数値が正確に浮動小数点で表現することができないので
function th(n,sep) {
sep = sep || '.';
var dec = n.toString().split(/[,.]/),
nArr = dec[0].split(''),
isDot = /\./.test(sep);
return function tt(n) {
return n.length > 3 ?
tt(n.slice(0,n.length-3)).concat(n.slice(n.length-3).join('')) :
[n.join('')]
;
}(nArr)
.join(sep)
+ (dec[1] ? (isDot?',':'.') + dec[1] : '');
}
sep1000(10000000000000.126); //=> 10.000.000.000.000,127
sep1000(1000000000000.126); //=> 1.000.000.000.000,126
私たちの良いお友達の浮動小数点精度のためです。 – deceze
[なぜCの浮動小数点型が出力で125.1〜125.099998の実際の入力を変更するのですか?](http://stackoverflow.com/questions/6532502/why-does-ac-floating-point-type-modify実際の入力125-1から125-099998-o)** **多くの人** – Alnitak
@Alnitak、私は知っていますが、さらに私はそれを防ぐ方法を探しています。私はまだ関連する答えを探しています。 – KooiInc