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
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 类型在表达式中的转换