作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
#include <stdio.h>
#include <stdint.h>
#include <fenv.h>
#include <math.h>
int main()
{
typedef union { uint32_t u; float f; } ufloat;
ufloat val;
float arg = 2401.999999;
int r;
r = fesetround(FE_DOWNWARD);
val.f = sqrtf(arg);
printf ("FE_DOWNWARD %22.13a [0x%x] %d\n", val.f, val.u, r);
r = fesetround(FE_TONEAREST);
val.f = sqrtf(arg);
printf ("FE_TONEAREST %22.13a [0x%x] %d\n", val.f, val.u, r);
r = fesetround(FE_TOWARDZERO);
val.f = sqrtf(arg);
printf ("FE_TOWARDZERO %22.13a [0x%x] %d\n", val.f, val.u, r);
r = fesetround(FE_UPWARD);
val.f = sqrtf(arg);
printf ("FE_UPWARD %22.13a [0x%x] %d\n", val.f, val.u, r);
return 0;
}
主机:Win10 x64。
0x42440a72
与 0x42440a73
)? 最佳答案
Why there are different results (0x42440a72 vs. 0x42440a73) between compilers?
<fenv.h>
不需要支持。
#include <fenv.h>
#pragma STDC FENV_ACCESS ON
我收到以下信息:
warning: ignoring #pragma STDC FENV_ACCESS [-Wunknown-pragmas]
另见
If pragma STDC FENV_ACCESS is absent, does it mean default rounding mode? ,
pragma STDC FENV_ACCESS ON is not supported
How to get the same results between compilers?
fenv.h
的可选功能或避免选择编译器。
#pragma STDC FENV_ACCESS ON
@Eric Postpischil .这可能无法解决此问题,但可以防止相关问题。
关于c - IEEE 754 : sqrtf() with fesetround(): different results between compilers: 0x42440a72 vs. 0x42440a73,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63870900/
我在网上找到的 C 和 POSIX 引用资料没有指定 C99 的 fesetround() 的线程安全性。甚至 GNU 文档也没有 [1]。状态是按线程还是按进程? [1] https://www.g
我正在将一些代码移植到 Windows(叹气)并且需要使用 fesetround。 MSVC 不支持 C99,因此对于 x86,我从 MinGW 复制了一个实现并对其进行了破解: //__asm__
我正在为区间运算编写一个 C# 库,为此我需要将浮点运算舍入模式设置为向上和向下。我知道在 C++ 中它可以通过 fesetround() 函数来实现。 C# 中是否有等效项,或者,如果没有,我该如何
#include #include #include #include int main() { typedef union { uint32_t u; float f; } uflo
我是一名优秀的程序员,十分优秀!