1

我想知道是否有任何方法來阻止javascript自動舍入我的號碼。我使用Gregory-Leibniz系列製作了一個計算pi的程序。它只會達到一定的小數位數。這裏是我的代碼:Javascript阻止自動舍入

pi=0; 
x=1; 
i=1; 
function doStuff(){ 
    pi = pi+(4/x); 
    x=x+2; 
    pi = pi-(4/x); 
    x=x+2; 
    document.getElementById("someDiv").innerHTML = pi; 
} 
+1

它只能達到一定的小數位數,因爲它只有*有一定的小數位數。換句話說,JavaScript數學的精度有限。 – Pointy

回答

1

如果你想與要求精度超越的JavaScript浮動(僅限64位精度),你可以考慮使用一個圖書館想在這個問題中提及的一個數字來工作:Is there a decimal math library for JavaScript?

特別是bignumber庫看起來很有希望達到您的目的。

這裏是一個快速演示的jsfiddle:http://jsfiddle.net/H88tS/

注意,小提琴在bignumber庫鏈接。

$(document).ready(function() { 

    BigNumber.config({ DECIMAL_PLACES : 50, ERRORS : false}); 

    var pi = new BigNumber(0, 10), 
     x = new BigNumber(1, 10), 
     two = new BigNumber(2, 10), 
     four = new BigNumber(4, 10); 

    function iterate() { 
     pi = pi.plus(four.dividedBy(x)); 
     x = x.plus(two); 
     pi = pi.minus(four.dividedBy(x)); 
     x = x.plus(two); 
     $("#pi").text(pi.toPrecision(50)); 
    } 

    $('button').click(iterate); 
}); 
0

不幸的是,它的計算不可能防止一些四捨五入與潛在的無限小數。

雖然有一些黑客可以提出建議,就像擁有一個HugeNumber類,它們的對象是列表或字符串數​​組,甚至包含數字的字符串,並且在其中實現了算術運算(當然,您自己) 。除非處理效率是一個問題,否則這將是一個可接受的解決方案。也許像這樣的東西已經存在於一個插件甚至是一些內置的類中,我只是從來沒有需要,所以我真的不知道。