正如在这个问题中所说,浮点数中的负零和正零之间存在一些差异.我知道这是因为一些重要的原因.我想知道的是一个短代码,以避免输出中的负零.
例如,在以下代码中:
cout << fixed << setprecision(3);
cout << (-0.0001) << endl;
Run Code Online (Sandbox Code Playgroud)
打印"-0.000".但我想要"0.000".
请注意所有其他负数(例如-0.001)仍应使用前面的减号打印,因此根本* -1不起作用.
我讨厌不得不问这个,因为我认为答案必须简单,但我不能因为我的生活似乎追查来源.在尝试重写函数时,遇到了这个问题:
a = -j
x = real(a)
y = imag(a)
y/x
Run Code Online (Sandbox Code Playgroud)
Inf我出乎意料地吐了出来.然而...
a = 0
b = -1
b/a
Run Code Online (Sandbox Code Playgroud)
-Inf像我期望的那样回归.进一步询问a == x,b == y.显然,这不是真的.经过很多挫折后,我终于找到了问题.如果原始输入a是0-j(相对-j)则没有问题.
双方real(-j)并real(0-j)返回零和测试为零,但显然似乎保存涉及原籍,我绝对不能发现一些元数据.我到底错过了什么?如果我必须用类似的东西来解决这个问题,那将会感到完全错误if (x == 0) then x = 0;
在 VC++ 2008 上,ceil(-0.5)正在返回-0.0. 这是通常/预期的行为吗?避免-0.0将 a打印到 i/o 流的最佳做法是什么。
程序启动时,我的程序需要将几个浮点数设置为默认数字.当程序运行时,这些整数将被设置为它们的真值.然而,这些真实值可以是任何实数.我的程序将一直检查这些数字,看看它们的值是否已从默认值更改.
例如,假设我有整数A,B,C.所有这些整数将在开始时设置为默认值(假设为-1).然后随着程序的进行,让A和B分别设置为3和2.由于C仍处于默认值,因此程序可以得出结论,但尚未为C指定非默认值.
尝试查找唯一的默认值时会出现问题.由于数字的值可以设置为任何值,如果其设置的值与默认值相同,我的程序将不知道浮点数是否仍具有默认值,或者其真值是否与默认值相同.
我认为NULL是一个默认值,但在C++中NULL等于0,导致同样的问题!
我可以创建一个由bool和float组成的整个对象作为成员,其中bool指示浮动是否已经分配了自己的值.然而,这似乎是一种矫枉过正.是否有一个默认值我可以设置我的浮点数,使得该值与任何其他值不相同?(例子包括无限或i)
我在问C/C++解决方案.