2016-04-25 77 views
-2

指數值的算術(+, - )運算是否有任何限制(最小值)?我需要用指數值執行算術運算,同時對某些指數值執行加法操作時不執行操作。考慮下面的例子,指數值的算術運算

var a=1.797693134862314e+308, 
     q =5e+291; 
    q=a+q; 
    if(a!= q) 
    alert("Value has changed"); 

在這個我已經使用警告框,以確保操作是否執行,因爲它是更大的價值。在上述值中,不執行加法運算,當「q」變量的值改變爲「5e + 292」時,將執行操作。

這裏是小提琴鏈接:

Sample working

Sample not working

我需要知道的是有最低值算術運算(+, - )的指數值操作。請幫助我解決這個問題。

謝謝,

Dharani。

+1

你對Java或Javascript感興趣嗎?他們是不同的語言。目前尚不清楚JQuery要做什麼,或者......你越具體,就越容易幫助你。 (我懷疑你只想要'javascript'標籤。) –

+0

@Jon Skeet,對不起,我只需要Javascript。 –

回答

1

Double只能表示一定精度的數字。

double nextAfter = Math.nextAfter(1.797693134862314e+308, 1.0); 

這是

1.7976931348623137E308 

即他們只用3在17顯著數字不同:在Java中,1.797693134862314e+308之後的下一個數字表示的可以被發現。

換句話說,如果您嘗試添加一個僅影響較大操作數中第18位有效數字的數字,則double根本無法表示差異,因此它們看起來是相同的。

現在,您的問題是關於Javascript的(現在),但是Javascript浮點數是IEEE754 64位浮點數,就像Java一樣。因此,可以表示的精度沒有區別。

+0

該問題已編輯爲僅包含JavaScript。 –

+0

@AmreshVenugopal編輯指出,在JS浮動和Java雙打中可以表示什麼沒有區別。 –

+0

如果我可能會建議,你能否重新回答這個問題,因爲答案和問題的提示使我覺得這個問題被提出來反對SO標準,但實際上是一個有效的問題? –