【发布时间】:2012-09-21 18:35:34
【问题描述】:
正如this 问题所说,浮点数中的负零和正零之间存在一些差异。我知道这是因为一些重要的原因。我想知道的是一个简短的代码,以避免输出负零。
例如在以下代码中:
cout << fixed << setprecision(3);
cout << (-0.0001) << endl;
打印“-0.000”。但我想要“0.000”。
请注意,所有其他负数(例如 -0.001)仍应在打印前加上减号,因此简单的 * -1 将不起作用。
【问题讨论】:
-
@TonyTheLion 如果我的号码是 -0.001 怎么办?它应该被打印 -0.001 而我不应该 * -1 这个。
-
AFAIK 一个负数乘以另一个负数得到一个正数。那是基本的数学。你的意思是什么?
-
在执行 *-1 之前,您必须检查您的数字是否为正数,否则您将得到一个负数作为输出。
-
@TonyTheLion 只有当结果为 -0.000 时,我才应该乘以 -1。并非您所说的所有负数“在执行 *-1 之前,您必须检查您的数字是否为正数”
-
您似乎在谈论两个不同的事情:负零和一个足够小的负数,打印时它会四舍五入为零,因此具有一定的精度。你想阻止哪个?
标签: c++ floating-point cout