2016-04-25 81 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标准,但实际上是一个有效的问题? –