Floating point 整数乘以浮点数,然后除以相同的浮点数-这是一种将值强制恢复为原始整数的干净方法
好的,我们有经典的1*1/3*3=0.999999。我明白为什么会这样 在我的用例中,我试图得到一个整数。我很乐意接受我的底线值,除非无限精度数学要求我们应该首先得到一个整数(参见:上面的用例) 有没有一种常用的方法来实现这一点 示例: 双myFloat=1.0/2.0 1*myFloat*2=2结果:2 myFloat=1.0/2.0 2.5*myFloat*2=2.5结果:2 myFloat=1.0/3.0 1*myFloat*3=.9999结果:1 myFloat=1.0/3.0 .9*myFloat*3=.9结果:0 我想到的一个方法是,在铺设地板之前,总是在我的结果上钉上一些三角形。不过,我想以一种干净、被普遍接受的方式取得我的成绩 编辑:为清晰起见,根据反馈进行了更改。将f(x)四舍五入为最接近的整数,四舍五入(f(x)) 比较f(x)和round(f(x))。如果它们足够接近,以至于差异是由于四舍五入造成的,则使用四舍五入(f(x))作为结果。如果没有,请使用地板(x)Floating point 整数乘以浮点数,然后除以相同的浮点数-这是一种将值强制恢复为原始整数的干净方法,floating-point,floating-accuracy,floating-point-precision,Floating Point,Floating Accuracy,Floating Point Precision,好的,我们有经典的1*1/3*3=0.999999。我明白为什么会这样 在我的用例中,我试图得到一个整数。我很乐意接受我的底线值,除非无限精度数学要求我们应该首先得到一个整数(参见:上面的用例) 有没有一种常用的方法来实现这一点 示例: 双myFloat=1.0/2.0 1*myFloat*2=2结果:2 myFloat=1.0/2.0 2.5*myFloat*2=2.5结果:2 myFloat=1.0/3.0 1*myFloat*3=.9999结果:1 myFloat=1.0/3.0 .9*m
如果输入值都具有相似的大小,则对于某些固定数ε,使用abs(f(x)-round(f(x))