我正在使用ofstream
. 99% 的浮点数的精度为小数点后 1-2 位,因此简单地使用fileOut.precision(3)
就足以强制实现正确的精度。
不时地,浮点数将具有极低的值,因此将以科学记数法输出1e-007
。在这种情况下,我最好喜欢0
.
这里的很多答案都建议使用类似于 to的东西fileOut.setf(std::ios::fixed, std::ios::floatfield);
来防止这种情况,但这会使每个字段都输出,0.000
而不管它是否需要那么多数字。
我想要的是所有花车都能正常运行并且不显示科学记数法。
有没有办法做到这一点,或者我必须创建一个简单的函数来检查一个 numebr 是否低于,比如说,0.001
如果是的话,将它设置为 0?
更新:
我现在使用以下代码来环绕任何浮点数,它并不理想但可以工作。
float _RoundToZero(float in, int precision = 2)
{
return in <= (1 / powf(10,precision)) ? 0.0 : in;
}