0
默认情况下,我获得4位精度,当我使用setprecision(6)
时,变量的最后几位随机出现,如1/3=0.333369
。如何在C++中打印6位精度的float值?
默认情况下,我获得4位精度,当我使用setprecision(6)
时,变量的最后几位随机出现,如1/3=0.333369
。如何在C++中打印6位精度的float值?
float
由于使用了24位二进制数字来存储数字的位数,所以其精度约为7个十进制数字。就产量而言,setprecision(6)
可以满足您的所有需求。
这很可能是您正在失去精确度,例如通过减去两个具有相似值的数字并打印结果。快速解决方案是将计算更改为使用double
或long double
。但是要对浮点结果的精度做出任何保证,您需要了解FP如何工作并分析公式计算方式。
参见What Every Computer Scientist Should Know About Floating-Point Arithmetic。
它看起来像你被'float'类型本身所限制,为什么不使用'double'?但即使这种类型也有局限性。 – fge
给出一个完整的例子 –
@Potatoswatter IEEE 754浮动不能像那样工作;) – fge