У меня проблема с многозначными числами. У меня есть поля типа номера с директивой ui-money-mask от https://github.com/assisrafael/angular-input-masks, где я могу вводить числа с 2 десятичными знаками. Но я хочу сохранить эти числа без разделителя, я имею в виду:
123.12 → 12312
1111.11 → 111111 и т.д.
Проблема в том, что когда я пытаюсь несколько раз на 100 удалять разделитель, иногда я получаю неправильный результат, например: 1111.11 * 100 = 111110.99999999999, но я хочу 111111.
Как я могу это исправить?
Это классическая проблема арифметики с плавающей запятой. В вашем случае я думаю, что самое простое решение - просто округлить:
Math.round(1111.11 * 100)
Он работает так же, как и toFixed(0)
за исключением того, что он не возвращает строку.
Вы можете сделать это, используя toFixed(0)
Попробуйте это
parseFloat("111110.99999999999").toFixed(0)
Вы можете просто использовать
Math.round(1111.11 * 100)
parseInt(1111.11 * 100) == 111110
Вы можете сделать это, используя toFixed или Math.round
var result = parseInt(parseFloat(1111.11).toFixed(0));
NB: toFixed возвращает строку, чтобы преобразовать ее снова в integer
ИЛИ
var result = Math.round(1111.11 * 100)