tom*_*rod 8 javascript php math rounding
信息:正确的答案是/sf/answers/3830484171/
我试图在Javascript中舍入一个浮点数,就像我在PHP中一样; 但是我不能用以下数字来表示两种语言:6.404999999999999
当我使用PHP时,我得到:6.41
,但是当我尝试使用Javascript进行回合时,我总是得到6.40
我的Javascript尝试:
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
}
Run Code Online (Sandbox Code Playgroud)
摘自:http://locutus.io/php/math/round/
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;
}
Run Code Online (Sandbox Code Playgroud)
摘自: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));
}
Run Code Online (Sandbox Code Playgroud)
我尝试了其他解决方案1.015
,但没有按预期工作。
这个解决方案效果很好,就像 PHP round 一样,适用于我尝试过的所有数字。
归档时间: |
|
查看次数: |
576 次 |
最近记录: |