避免输出为负零的最佳方法是什么
what is the best way to avoid negative zero in output?
正如这个问题所说,浮点数中的负零和正零之间存在一些差异。我知道这是因为一些重要的原因。我想知道的是一个短代码,以避免输出中的负零。
例如在下面的代码中:
cout << fixed << setprecision(3);
cout << (-0.0001) << endl;
打印"-0.000",但我想要"0.000"。
请注意,所有其他负数(例如 -0.001)仍应打印前带有减号,因此简单地* -1
不起作用。
根据您的精度进行尝试。
cout << ((abs(ans) < 0.0005)? 0.000: ans) << endl;
怎么样:
cout << (value == 0.0 ? abs(value) : value) << endl;
如果你关心任意精度,而不是仅仅在 3 的固定精度,你需要一点点工作。 基本上,您必须在cout之前进行预检查,以查看该数字是否会以您不喜欢的方式格式化。
你需要找到数字的数量级,看看它是否会丢失不精确的数字,只留下符号位。
您可以使用数字绝对值的 10 对数为底来执行此操作。 如果结果的负数大于您设置的精度,则该数字将以您不希望的方式显示。
0.0001 的 log10 是 -4。
(-4) 的负数为 4。
4> 3(任意精度)因此,该值将不愉快地显示。
在非常糟糕的伪代码中:
float iHateNegativeZeros(float theFloat, int precision)
{
if((theFloat < 0.0f) &&
(-log10(abs(theFloat)) > precision))
{
return -theFloat;
}
else
{
return theFloat;
}
}
相关文章:
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 在C++中向零方向近似的最佳方法
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 检测win32服务创建和删除的最佳方法
- 在C++中样板"冷/never_inline"错误处理技术的最佳方法是什么?
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 将线程中的数据存储到全局容器的最佳方法?
- 将一系列整数放入类的最佳方法是什么?
- 在派生类中使用基类的私有成员变量的最佳方法
- 在 C++ 中将非指定类型作为参数传递的最佳方法?
- Qt - QVector 和模型视图 - 从列表视图获取自定义类的最佳方法是什么?
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 比较两个节点坐标的最佳方法是什么?
- 在nodejs中使用本机代码的最佳方法是什么?
- 将 pybind11 绑定标记为已弃用的最佳方法
- C++:将向量传递到构造函数以创建成员变量的最佳方法?
- C++中变量混叠的最佳方法
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?