在Javascript计算中使用括号时出现意外结果(NaN)

时间:2019-03-17 17:31:56

标签: javascript math

我正在尝试对11.000 + 5.000做一个非常简单的计算,期望它有16.000,然后将其除以2,期望得到8.000的最终结果。可以用另一种语言(ahk)正常运行,但是我在javascript中尝试(不是数字,5.5和5.50025)有意外结果

我应该如何编写此计算以获得8.000的预期结果?

var A = "11.000";
var B = "5.000";

//1st try
var resultA = (A + B) / 2;
alert(resultA);


//2nd try
var resultB = parseInt(A + B) / 2;
alert(resultB);

//3nd try
var resultC = parseFloat(A + B) / 2;
alert(resultC);


//expected = 8.000

3 个答案:

答案 0 :(得分:2)

这里A + B实际上是在进行字符串缩编,而不是简单的加法。您需要先将其更改为数字

var A = "11.000";
var B = "5.000";


var resultA = ((+A) + (+B)) / 2;
console.log(resultA);

// You can use toFixed if you three decimal digit

console.log(resultA.toFixed(3));

答案 1 :(得分:1)

此处A和B为字符串格式,一旦执行A + B,结果将为“ 11.000” +“ 5.000” =“ 11.0005.000”(字符串串联)。因此,要获得预期的结果,您应该将每个字符串值解析为Float / Int,然后执行加法运算。

尝试var resultD = (parseFloat(A) + parseFloat(B)) /2

答案 2 :(得分:0)

只需删除引号,变量将被识别为数字而不是字符串,因此您将获得预期的结果。

var A = 11.000;
var B = 5.000;

//1st try
var resultA = (A + B) / 2;
alert(resultA);


//2nd try
var resultB = parseInt(A + B) / 2;
alert(resultB);

//3nd try
var resultC = parseFloat(A + B) / 2;
alert(resultC);


//expected = 8.000