У меня есть этот блок, который вытаскивает текущую сумму, уплаченную за предмет из Firebase, и сумму, выплачиваемую на данный момент. Затем предполагается добавить их вместе, чтобы сделать третью переменную.JQuery Calculation drop cents
По какой-то причине код понижает котировки от общей суммы.
singleRef.once("value", function(snapshot) {
var a = parseInt(snapshot.val().amounts.paid); // The amount already paid
var b = parseInt(invoice.payment.amount); // The amount being applied
var c = a + b;
console.log(c);
});
Допустим, происходит следующее:
a = 0;
b = 10.86;
The result in this code will be:
c = 10; // should be 10.86
Допустим, происходит следующее:
a = 10.00;
b = 10.86;
The result in this code will be:
c = 20; // should be 20.86
Это не имеет значения то, что центы, он всегда округляет, чтобы избавиться от них. Я попытался добавить .toFixed('2')
ко всем переменным, просто a и b, и просто c. Все результаты равны нулю.
КАК !? Я пытался сделать это в течение последних нескольких часов, это, наверное, просто, но я не могу понять это. Это сводит меня с ума! Я использую angularjs и firebase.
Вы вызываете 'parseInt()', который анализирует только целые числа. Вы получите лучшие результаты, если используете 'parseFloat()'. См. Https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt и https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects./parseFloat. Но обратите внимание, что JavaScript не целое число - это плавающая точка, что является очень неточным способом отслеживания денег (в какой-то момент вы получите ошибки округления). Обычно вы лучше отслеживаете деньги в центах, так как тогда вы всегда работаете целыми числами. –
@FrankvanPuffelen Итак, было бы лучше взять введенную пользователем сумму и перевести ее на центы? Я хочу быть уверенным, что я делаю то, что лучше.Если это так, можете ли вы дать ответ на примере этого. Я ценю объяснения! – moevans
@Frank, если быть точным, если вы просто добавляете и вычитаете, ваш «в какой-то момент» довольно далеко от вас, включая * много * операций :-) Хорошо знать, но маловероятно на практике. Неаддитивные изменения (умножение, деление, функции более высокого порядка) являются более проблематичными. – paxdiablo