簡體   English   中英

javascript toFixed 在我的計算中不起作用

[英]javascript toFixed not working in my calculations

大家好,我有字節說007458415820874584158208042423283712 。我想把它轉換成 GB,所以試着把它除以1048576我得到的結果是7.112899609446129e+27 我只想要小數點后的兩個數字,所以我使用了 .toFixed 如下。 它不起作用,我得到的響應與我沒有使用 toFixed 函數一樣。 我只希望結果僅為 7.1。 幫我解決這個問題。

 console.log((007458415820874584158208042423283712/1048576).toFixed(2));

您可以將此原型函數用於您的解決方案。

 Number.prototype.toFixedSpecial = function(n) { var str = this.toFixed(n); if (str.indexOf('e+') === -1) return str; // if number is in scientific notation, pick (b)ase and (p)ower str = str.replace('.', '').split('e+').reduce(function(p, b) { return p + Array(b - p.length + 2).join(0); }); if (n > 0) str += '.' + Array(n + 1).join(0); return str; }; var val = (007458415820874584158208042423283712/1048576); console.log(val); console.log(val.toFixedSpecial(2)) //"7112899609446129000000000000.00" console.log( 1e21.toFixedSpecial(2) ); // "1000000000000000000000.00" console.log( 2.1e24.toFixedSpecial(0) ); // "2100000000000000000000000" console.log( 1234567..toFixedSpecial(1) ); // "1234567.0" console.log( 1234567.89.toFixedSpecial(3) ); // "1234567.890"

您的問題是這是科學記數法,而toFixed()支持 20 位小數。 您的號碼是7.112899609446129e+27 ,技術上(最有可能)有小數位,但由於科學記數法,它們不可見。

解決方案是像這樣使用toExponential()

parseFloat((7458415820874584158208042423283712/1048576.0).toExponential(2))

輸出: 7.11e+27

這里顯示了更正確的方法: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toExponential

但這給出了"7.11e+27" (一個字符串)

如果你只想要7.11那么你可以使用slice(0,3)如下:

var result_str = (7458415820874584158208042423283712/1048576).toExponential(2);
console.log(parseFloat(result_str.slice(0,3)));

結果: 7.1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM