我试图用和PHP一样的方式在Javascript中对浮点数进行舍入;但是我不能用同样的方式将两种语言的数字四舍五入:< code > 6.4049999999999
当我使用PHP循环时,我得到:6.41
,但当我尝试使用Javascript循环时,总是得到6.40
信息: 正确答案是 https://stackoverflow.com/a/54721202/4359029
我的脚本尝试:
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/
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 roundToXDigits(value, digits)
{
if (!digits) {
digits = 2;
}
value = value * Math.pow(10, digits);
value = Math.round(value);
value = value / Math.pow(10, digits);
return value
}
var num = roundToXDigits(6.404999999999999, 3); //creates 6.405
console.log(roundToXDigits(num, 2)); //creates 6.41
问题是,JavaScript在技术上没有错。6.4049 -
来源:脚本数学,四舍五入到小数点后两位
^^布莱斯答案的扩展用法。
您可以使用toPrecision函数
它将被提供的精度
四舍五入。这里我四舍五入4
以获得6.405
,然后四舍五入3
以获得6.41
parseFloat((6.404999999999999).toPrecision(4)).toPrecision(3);
console.log(parseFloat((6.404999999999999).toPrecision(4)).toPrecision(3));
我认为最好的答案是下一个:
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回合一样,我尝试过的所有数字。
问题内容: 我如何获得年度的当前星期数,例如PHP的星期数? 它应该是ISO-8601的 星期数,从星期一开始的星期数。 问题答案: 在观察夏令时和1月1日是星期五的年份中,日期存在问题。通过使用所有UTC方法进行修复。以下代码将相同的结果返回给Moment.js。 创建“ UTC”日期时,小时为零。 最小化的原型版本(仅返回星期数): 测试部分 在本部分中,您可以输入YYYY-MM-DD格式的任
问题内容: 我想使用Javascript舍入一个数字。由于数字是货币,因此我希望像以下示例一样将其舍入(小数点后两位): 192.168 => 192.20 192.11 => 192.20 192.21 => 192.30 192.26 => 192.30 192.20 => 192.20 如何使用Javascript实现呢?内置的Javascript函数将根据标准逻辑对数字进行四舍五入(四舍五
编写一个按日期分组的程序 主题输出格式应为:[{“日期”:“2021-01-01”,“主题列表”:[{“主题名称”:“空气”,“主题计数”:3},{“主题名称”:“速度”,“主题计数”:1}],{},{}]
我试图在朱莉娅做一个非常简单的逻辑回归。但是朱莉娅的打字系统似乎给我带来了问题。基本上,glm预测给了我一系列的可能性。我想做一个简单的循环,如果概率>=0.5,它是1,否则是0。我希望这些标签也是整数。
问题内容: 在使用流的Java 8中,当我一个接一个地链接方法时,将以流水线方式执行操作。 例: 输出:- 但是当我在javascript中尝试类似的时候,结果却不同。正如在javascript中一样,第一个操作完成,然后执行第二个操作。例如:- 输出:- JavaScript中有什么方法可以使其以管道方式执行操作,并且可以像Java程序一样获得输出? 这个问题仅询问如何像JavaScript那样
问题内容: 在Python 2中,我使用了: 我试过了: 问题答案: 在Python2中,是一个引入了以下语句的关键字: 在Python3中,是可以调用的函数: 在这两个版本中,都是一个运算符,它在左侧需要一个字符串,在右侧需要一个值或一个值的元组或一个映射对象(如)。 因此,您的行应如下所示: 另外,对于Python3和更高版本,建议使用-style格式而不是-style格式: Python 3