有一个浮点数,其值从 0.0 到 1.0,它的值为 0.666666 我们需要这样做,以便之后 .只有4位数字,尝试在VSCode上实现不同的方式,没有任何效果,我尝试过:
- 通过除法和乘法
- 通过圆形等
- 通过字符串翻译
- 通过分裂成一系列魅力并转移回来
- 通过将数字拆分为整数和余数的函数
所有尝试均以 float 记住其旧值并返回其原始状态而结束
有一个浮点数,其值从 0.0 到 1.0,它的值为 0.666666 我们需要这样做,以便之后 .只有4位数字,尝试在VSCode上实现不同的方式,没有任何效果,我尝试过:
所有尝试均以 float 记住其旧值并返回其原始状态而结束
在“float”变量本身中,不可能存储
0.666666, 或0.6667(或0.6666取决于您所说的所需 4 位数字)。您只能存储最接近它们的数字。类型:
事实上,比 更
0.666700006接近。0.66670.666699946聚苯乙烯
严格来说,
float x = round(in*10000.)/10000.操作中有一个不太可能的伏击,in*10000.它是精确执行的,round(...)/10000.它是通过类型 的舍入来计算的double,赋值将结果舍入为float,并且通过这些舍入的极其不幸的组合,您可以获得不最接近的值float,但邻近的一个。那些。此类代码不应在需要保证准确性的情况下使用,例如打印多位数字等。
但在这种情况下,我们很幸运。
附言
从数学的角度来看,要理解上面的代码,标准函数的描述
nextafterf()就足够了,但是,正如所建议的,用人类语言阅读并没有什么坏处:根据 IEEE 的单精度数字,这通常也是float购买力平价服务
抱歉,我更正了拼写错误,如果您只需要前 4 位数字,则代码已四舍五入为 4 位数字,即因此,
0.6666应该使用最接近 , then 的值trunc(in*10000.)/10000.。