gpt4 book ai didi

JavaScript 数字除法

转载 作者:太空宇宙 更新时间:2023-11-04 02:54:46 26 4
gpt4 key购买 nike

我在除法时需要考虑几种情况。

规则:- 除法必须始终返回小数点后 2 位- 不得进行舍入。

这是我使用的逻辑:

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。数字来自数据库,并且最初总是字符串。

最佳答案

建议的策略是首先将数字乘以 100(如果您需要小数点后 3 位数字,则为 1000,依此类推)。将结果转换为整数,然后除以 100。

function divideAndReturn (totalPrice, runningTime) {
let result;
let totalPriceFloat = parseFloat(totalPrice); // no need to format anything right now
let runningTimeNumber = parseInt(runningTime, 10); // Always a round number
result = parseInt((totalPriceFloat * 100) / runningTimeNumber); // I do not need rounding. Need exact decimals
result /= 100
return result.toFixed(2) // returns a string with 2 digits after comma
}

console.log(divideAndReturn('1000.00', 6))
console.log(divideAndReturn('100.00', 12))
console.log(divideAndReturn('1000.00', 5))

关于JavaScript 数字除法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55964876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com