Неожиданный результат (NaN) при использовании скобок в вычислении Javascript - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь сделать очень простой расчет 11.000 + 5.000, ожидая получить 16.000, а затем разделить его на 2, ожидая получить окончательный результат 8.000.Это работало нормально на другом языке (ах), но я получаю неожиданные результаты, пробуя это в 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 ]

2 голосов
/ 17 марта 2019

Здесь 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 голос
/ 17 марта 2019

Здесь A и B представлены в строковом формате, и после того, как вы сделаете A + B, результат будет "11.000" + "5.000" = "11.0005.000" (конкатенация строк).Таким образом, чтобы получить ожидаемый результат, вы должны проанализировать каждое строковое значение в Float / Int, а затем выполнить операцию сложения.

Try, var resultD = (parseFloat(A) + parseFloat(B)) /2

0 голосов
/ 26 марта 2019

Просто удалите кавычки, и переменные будут распознаваться как числа, а не как строки, поэтому вы получите ожидаемый результат.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...