2016-11-17 63 views
0

在這裏我感到了JavaScript的浮動值,我需要顯示實際值的浮點高達8小數,但瀏覽器的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))」其實我正在開發方法,我可以在一個位置處理這些情況,請檢查編輯 –

回答

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

嗯,它會是'0',因爲我只要求前8位數字。如果這是一個問題,只需用空字符串替換'/\.$/'。 –

+0

是的,你是對的。但那是他真正需要的結果嗎? –