C语言四舍五入问题

来源:百度知道 编辑:UC知道 时间:2024/07/03 11:36:27
设变量n为float类型, m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是:

A) n=(n*100+0.5)/100.0

B) m=n*100+0.5, n=m/100.0

C) n=n*100+0.5/100.0

D) n=(n/100+0.5)*100.0

B

c

没答案~~

最接近的为B 如果题目中n设为double型而不是floatB就是对的 可以验证一下

===================================================================

我们以1.155这个数做验证~~ 如果结果正确答案应该为1.16

依题目的意思n为float

程序为

#include<iostream>
using namespace std;

int main()
{

int m;float n=1.155;

m=n*100+0.5;
n=m/100.0;

cout<<n<<endl;

return 0;

}

===================

这个结果为1.15 结果错误

如果n不是1.155那float型的也都正确其他的值四舍五入都没问题 只有这个1.155不对

如果将题目中的float改为double

程序为:
#include<iostream>
using namespace std;

int main()
{

int m;double n=1.155;

m=n*100+0.5;
n=m/100.0;

cout<<n<<endl;

return 0;

}

================

结果为1.16完全正确 改为其他的值四舍五入也没问题~~

很邪乎吧~~ 这个牵扯到double float int 类型在表达式中的转换