运维开发网

在C中以混合型计算进行铸造?

运维开发网 https://www.qedev.com 2020-05-11 08:33 出处:网络 作者:运维开发网整理
如果我定义这些变量: double x0, xn, h; int n; 我有这个数学表达式: h = (xn - x0)/n; 我是否有必要在进行除法之前将n转换为双精度,以获得最大精度 h = (xn - x0)/ (double) n; 我写了一个程序来检查上面的内容,但两个表达式给出了相同的答案.我理解C会将整数提升为double类型,因为变量xn和x0的类型为double,但在书中非常奇怪
如果我定义这些变量:

double x0, xn, h;
int n;

我有这个数学表达式:

h = (xn - x0)/n;

我是否有必要在进行除法之前将n转换为双精度,以获得最大精度

h = (xn - x0)/ (double) n;

我写了一个程序来检查上面的内容,但两个表达式给出了相同的答案.我理解C会将整数提升为double类型,因为变量xn和x0的类型为double,但在书中非常奇怪,强调了第二个带有强制转换的表达式.

我的问题是,如果我正在思考.

非常感谢…

你的理解是正确的,你读的书要么是错误的要么是过于谨慎(就像声称你应该总是测试0 == x而不是x == 0的人).没有强制转换的表达式应始终提供与使用强制转换的表达式完全相同的结果.
0

精彩评论

暂无评论...
验证码 换一张
取 消