提问人:Quang Thinh Ha 提问时间:6/2/2022 最后编辑:phuclvQuang Thinh Ha 更新时间:6/3/2022 访问量:89
为什么 C 或 C++ “-0” 不会产生浮点 -0?
Why does C or C++ “-0” not produce a floating-point −0?
问:
我正在尝试收集一些浮点运算的边缘情况。问题是,我的尝试并没有向我展示我想要的东西:printf
#include <cmath>
#include <stdio.h>
#include <complex>
int main() {
double x = -0;
auto y = sqrt(x);
printf("x %f y %f \n", x, y);
return 1;
}
根据 IEEE,是 ,但这会打印出 x 和 y 为 0。squareRoot(-0)
-0
关于如何实现我想要的东西有什么建议吗?是通过编译器标志还是其他东西?
答:
10赞
dbush
6/3/2022
#1
0
是一个整数常数,所以也是一个整数,它仍然是 。-0
0
要获得负零,请使用浮点常量。
double x = -0.0;
评论
auto
int
double