JavaScript中的固定数字向下舍入 问题

JavaScript中的固定数字向下舍入 问题,javascript,floating-point,rounding,floor,Javascript,Floating Point,Rounding,Floor,我得到从1到5的数字,包括中间所有可能的浮点数。输出必须包含逗号后的两个数字,如果是逗号后的数字,则需要向下舍入(下限) 输入和输出示例: 1->1.00 4.3->4.30 1.1000->1.10 1.5999->1.59 我的尝试 我的尝试是在数字的100倍上做一个算术运算,然后除掉逗号后不需要的数字。数字.toFixed(2)为我提供了之后可能缺少的零: (Math.floor(input * 100) / 100).toFixed(2) 问题在于JavaScript的浮点精度:

我得到从1到5的数字,包括中间所有可能的浮点数。输出必须包含逗号后的两个数字,如果是逗号后的数字,则需要向下舍入(下限)

输入和输出示例:

  • 1->1.00
  • 4.3->4.30
  • 1.1000->1.10
  • 1.5999->1.59
我的尝试 我的尝试是在数字的100倍上做一个算术运算,然后除掉逗号后不需要的数字。数字.toFixed(2)为我提供了之后可能缺少的零:

(Math.floor(input * 100) / 100).toFixed(2)
问题在于JavaScript的浮点精度:

Math.floor(4.14 * 100) / 100
// results in 4.13 because 4.14 * 100 is 413.99999999999994
函数格式编号(x){
//将其转换为字符串
var s=”“+x;
//如果x是整数,则缺少该点,因此将其添加
如果(s.indexOf(“.”)=-1){
s+=”;
}
//确保我们至少有2个小数
s+=“00”;
//取前2位小数
返回s.substring(0,s.indexOf(“.”+3);
}
文件。写(1+“->”+格式编号(1)+“
”); 文件。写(4.3+“->”+格式编号(4.3)+“
”; 文件。写(1.1000+“->”+格式编号(1.1000)+“
”; 文件。写(1.5999+“->”+格式编号(1.5999)+“
”;
文件。写(4.14+“->”+格式编号(4.14)+“
可能重复的@DylanCorriveau我不认为是相同的,Hubert想要的是保留小数点后的两个有效数字,而不向上或向下舍入,另一个问题专门讨论舍入我认为你想要的只能通过字符串操作来解决,将数字四舍五入以获得所看到的两个有效数字是非常精确的,因为打印为
4.14
的数字实际上是4.139999999996802557686890795491635799407958984375,请参见,看起来这个问题真的可以通过字符串操作来解决。伟大的代码!