[c语言]1.0/3*3 结果不等于1? 怎样才能等于1?

发布网友 发布时间:2024-10-23 23:28

我来回答

4个回答

热心网友 时间:10小时前

你那不是四舍五入的问题,是编译器本身的问题.
在一些先进的编译器里面,这个值应该会等于1的.
在TC在编译,为了避免这种情况可以用笨一点的办法:
(1.0/3+0.000003)/3
加上0.000003应该不会对以后的数据引起太大的麻烦,这个值不应过大,也不能太小,0.000002或者0.000003都行吧.

--------------------------
基本上来说这个表达式是否等于1,跟编译器相关.

热心网友 时间:10小时前

这个问题我以前问过,
不一定等于1的,大多编译器是这样算的:
1.0/3=1.33333333333333333333;(它对超出精度部分舍去)
0.333333333333333333333333*3=0.9999999999999999999999999;
于是就不等于1了
但我用过的有一个编译器就能让这个结果为1.00000000000000000000,貌似是对超出精度的部分四舍五入了...

热心网友 时间:10小时前

1.0%(3*3)好像就会等于1吧

热心网友 时间:10小时前

似乎不行呀,
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com