Javascript 如何在我的浮动后减少两位数?在Java脚本中,不更改为字符串

Javascript 如何在我的浮动后减少两位数?在Java脚本中,不更改为字符串,javascript,floating-point,Javascript,Floating Point,我想在float之后取两位数,如下例: function cut() { var num1=8.844 // should be return 8.84 var num2=8.847 // should be return 8.84 } 您可以将该值乘以100,取加了底的值,然后除以100 你可能会看到浮点运算的奇妙世界,数字或多或少都有小数,比如 功能切割(值){ 返回数学下限(值*100)/100; } 原木(切割(8.844)); 原木(切割(8.847))如果不转换为字符串,

我想在float之后取两位数,如下例:

function cut() {

var num1=8.844

// should be return 8.84

var num2=8.847

// should be return 8.84
}

您可以将该值乘以100,取加了底的值,然后除以100

你可能会看到浮点运算的奇妙世界,数字或多或少都有小数,比如

功能切割(值){
返回数学下限(值*100)/100;
}
原木(切割(8.844));

原木(切割(8.847))如果不转换为字符串,则无法可靠地执行此操作。数字表示为二进制浮点值。@Pointy:如果数字已经存在于数字对象中,则有一些方法可以不转换为字符串来完成此操作。一个德克尔分割可以用来将值分离成可以被100乘的部分而不出错,然后整数部分可以根据需要被分离和操作。是的,这是可能的,但是我认为这等同于转换成一个字符串。OP显然想要一个被截断多余小数位的数值,而这在二进制浮点的基本性质上通常是不可能的。@Pointy:只要这个数字不太大(大约2**53/100),就可以计算出一个接近所需小数的数值,并用它来产生所需的输出,或小心地在进一步的计算中使用它。这是行不通的。对于可表示为JavaScript数字的1.169999999999928945726423989412887573732421875,乘以100生成117,然后
Math.floor(value*100)/100
生成原始数字,而不是调整为1.16或其附近的结果。请查看上述链接。用64位浮点数表示法是不可能的。不,这不是不可能的。我使用浮点运算找到这个数字,并使用相当普通的技术计算出正确的结果。我显示的数字是一个可以用数字格式精确表示的数字,它是一个小数点后的前两个小数位数为16的数字,正确的结果是可计算的,而您显示的代码计算的结果不正确。请继续。