2016-11-17 9 views
0

JavaScript浮動小数点数に浮動小数点数を浮動小数点数として表示する必要がありますが、ブラウザのJSエンジンは0.00000001〜1e-8 。javascript浮動小数点数の精度浮動小数点数が6桁を超えて

function toCustomString(numberToFormat) { 
 
      return '' + Number(numberToFormat.toFixed(8).replace(/\,/g, ',')); 
 
     }; 
 

 
// Floating value with 6 digits 
 
var value1 = 0.000001; 
 
console.log(toCustomString(value1)) 
 

 

 
// Floating value with 8 digits 
 
var value2 = 0.00000001; 
 
console.log(toCustomString(value2) + " <-- this is wrong") // I want here output should be 0.00000001 
 

 
// Floating value with 8 digits but value greate than 0.000001 
 
var value3 = 0.00010000; 
 
console.log(toCustomString(value3))

+0

toFixed(n)は、浮動値をコンマの後にn桁の文字列に変換します。私はあなたにして何が間違っているのか分かりません。 –

+0

@KevinKloet「console.log(value3.toFixed(8))」を参照してください。実際に、これらのケースを1つの場所で処理できるメソッドを開発しています。 –

答えて

0

あなたdigitsを完全にコントロールしたい場合は、https://github.com/MikeMcl/decimal.jsを見てみましょう。

あなたが0末尾たくない場合は、単に正規表現でそれらを削除します。

console.log(
 
    '"trailing 0":', 
 
    Number("0.00010000").toFixed(8) 
 
); 
 
console.log(
 
    '"no trailing 0":', 
 
    Number("0.00010000").toFixed(8).replace(/0*$/,'') 
 
);

そして0.0000000001と:

console.log(
 
    '"trailing 0":', 
 
    Number("0.0000000001").toFixed(8) 
 
); 
 
console.log(
 
    '"no trailing 0":', 
 
    Number("0.0000000001").toFixed(8).replace(/0*$/,'') 
 
);

+0

あなたのケースでは、「0.0000000001」の結果はどうなりますか? –

+0

私は最初の8桁だけを要求するので、それは '0'です。これが問題であれば、単に '/\.$/ 'を空文字列に置き換えてください。 –

+0

ええ、そうです。彼は本当に必要なものと同じ結果ですか? –

関連する問題