Я пытаюсь сделать очень простой расчет 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десятичный разделитель...
которого? 1 / 10 === 0.1 ? или тысячи?
Вы пытаетесь преобразовать 11.0005.000 в int или float — вот почему вы получаете NaN. Делай (parseInt(A)+parseInt(B))/2
Вот совет по отладке: если у вас есть сложное выражение, разбейте его на более мелкие, чтобы вы могли отлаживать каждый шаг. var temp = (A+B); var resultA = temp / 2;
@NinaScholz эти числа представляют собой результаты вычислений между координатами svg, такими как x400 - x200; я получаю эти значения из изображения SVG.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Здесь A + B на самом деле выполняет конкатенацию строк, а не простое сложение. вам нужно сначала изменить их на номер
var A = "11.000";
var B = "5.000";
var resultA = ((+A) + (+B)) / 2;
console.info(resultA);
// You can use toFixed if you three decimal digit
console.info(resultA.toFixed(3));Здесь A и B в формате строки, и как только вы сделаете A + B, результатом будет «11.000» + «5.000» = «11.0005.000» (конкатенация строк). Поэтому, чтобы получить ожидаемый результат, вы должны проанализировать каждое строковое значение на Float/Int, а затем выполнить операцию сложения.
Попробуйте, var resultD = (parseFloat(A) + parseFloat(B)) /2
Просто удалите кавычки, и переменные будут распознаны как числа, а не как строки, поэтому вы получите ожидаемый результат.
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
что означает точка для вас? без шуток.