gpt4 book ai didi

javascript - 如何像 PHP 那样在 javascript 中四舍五入

转载 作者:可可西里 更新时间:2023-11-01 12:35:20 28 4
gpt4 key购买 nike

我正在尝试以与在 PHP 中相同的方式在 Javascript 中对 float 进行舍入;但我不能使两种语言都以相同的方式舍入以下数字:6.404999999999999

当我使用 PHP 舍入时,我得到:6.41但是当我尝试使用 Javascript 舍入时,我总是得到 6.40

INFO: The correct answer is https://stackoverflow.com/a/54721202/4359029

我的 Javascript 尝试:

尝试#1:

module.exports = function round (value, precision, mode) {
var m, f, isHalf, sgn // helper variables
// making sure precision is integer
precision |= 0
m = Math.pow(10, precision)
value *= m
// sign of the number
sgn = (value > 0) | -(value < 0)
isHalf = value % 1 === 0.5 * sgn
f = Math.floor(value)

if (isHalf) {
switch (mode) {
case 'PHP_ROUND_HALF_DOWN':
// rounds .5 toward zero
value = f + (sgn < 0)
break
case 'PHP_ROUND_HALF_EVEN':
// rouds .5 towards the next even integer
value = f + (f % 2 * sgn)
break
case 'PHP_ROUND_HALF_ODD':
// rounds .5 towards the next odd integer
value = f + !(f % 2)
break
default:
// rounds .5 away from zero
value = f + (sgn > 0)
}
}

return (isHalf ? value : Math.round(value)) / m
}

摘自:http://locutus.io/php/math/round/

尝试#2:

round(decimal: number, decimalPoints: number): number{
let roundedValue = Math.round(decimal * Math.pow(10, decimalPoints)) / Math.pow(10, decimalPoints);

console.log(`Rounded ${decimal} to ${roundedValue}`);
return roundedValue;
}

摘自:https://stackoverflow.com/a/50918962/4359029


我尝试了其他解决方案...但没有成功。

谁能告诉我如何让 Javascript 的四舍五入像 PHP 一样运行?

在我解释的情况下,您能告诉我为什么它们以不同的方式工作吗?

最佳答案

我认为最佳答案是下一个:

function roundLikePHP(num, dec){
var num_sign = num >= 0 ? 1 : -1;
return parseFloat((Math.round((num * Math.pow(10, dec)) + (num_sign * 0.0001)) / Math.pow(10, dec)).toFixed(dec));
}

我用 1.015 尝试了其他解决方案,但没有按预期工作。

这个解决方案运行良好,就像 PHP 回合一样,我尝试了所有数字。

关于javascript - 如何像 PHP 那样在 javascript 中四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53450248/

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