5

ご存知のように、これは SO に関する最もよく聞かれるトピックの 1 つであるため、丸め誤差に問題があります (実際には誤差ではありません。私はよく知っています)。私の要点を説明する代わりに、私が持っている可能性のある数と、取得できるようにしたい入力の例を示します。

まあ言ってみれば

var a = 15 * 1e-9;
alert(a)

出力

1.5000000000000002e-8

代わりに取得できるようにしたいのですが1.5e-8、e-8かe-45かそれ以外か分からないので、10e8で掛けたり、丸めたり、10e8で割ったりすることはできません。

基本的には、その部分を取得し、指数部分1.5000002を適用して戻すことができるようにしたいと考えています。toFixed(3)

文字列に変換して解析することはできましたが、正しくないようです...

何か案が ?


(これが多くの重複の1つであると思われる場合は、事前にお詫び申し上げますが、同様の質問は見つかりませんでした。関連するもののみです)

ガエル

4

2 に答える 2

12

toPrecision次の方法を使用できます。

var a = 15 * 1e-9;
a.toPrecision(2); // "1.5e-8"
于 2011-01-28T17:09:17.230 に答える
0

科学的な作業を行っていて、有効数字を考慮して丸める必要がある場合: 任意の有効桁数への丸め

于 2011-01-28T17:13:04.400 に答える