除数时,我需要处理几种情况。
规则: -除法必须始终返回小数点后两位-不能四舍五入。
这是我使用的逻辑:
function divideAndReturn (totalPrice, runningTime) {
let result;
let totalPriceFloat = parseFloat(totalPrice).toFixed(2);
let runningTimeNumber = parseInt(runningTime, 10); // Always a round number
result = totalPriceFloat / runningTimeNumber; // I do not need rounding. Need exact decimals
return result.toString().match(/^-?\d+(?:\.\d{0,2})?/)[0]; // Preserve only two decimals, avoiding rounding up.
}
在以下情况下,它可以正常工作:
let totalPrice = '1000.00';
let runningTime = '6';
// result is 166.66
它也适用于这种情况:
let totalPrice = '100.00';
let runningTime = '12';
// Returns 8.33
但是对于这种情况,它不能按预期工作:
let totalPrice = '1000.00';
let runningTime = '5';
// Returns 200. Expected is 200.00
看来,当我对舍入数字进行除法时,除法本身删除了.00小数位
如果我的逻辑可以解决,请说明一下。或者,如果有更好的方法来弥补这一点,我也很高兴。
PS。数字来自数据库,并且最初始终是字符串。
天涯尽头无女友
HUH函数
跃然一笑
相关分类