- 论坛徽章:
- 14
|
本帖最后由 bruceteen 于 2013-06-15 09:43 编辑
搞懂了_control87在VC中的用法(虽然对本帖而言还解决不了问题),记下来:- #include <stdio.h>
- #include <float.h>
- #pragma fenv_access(on)
- int main()
- {
- double a=0.123456789, b=0.123456789;
- // 先保存当前的舍入模式
- unsigned int fe = _controlfp( 0, 0 );
- // 设置为向下舍入,并计算a*b
- _controlfp( _RC_DOWN, _MCW_RC );
- double r1 = a*b;
- // 设置为向上舍入,并计算a*b
- _controlfp( _RC_UP, _MCW_RC );
- double r2 = a*b;
- // 恢复原先的舍入模式
- _controlfp( fe, _MCW_RC );
- double delta = r2-r1;
- printf( "%e\n", delta );
- return 0;
- }
复制代码 输出 1.734723e-018 |
|