我们上课做了强制转换的示例,double->float,3.1215924转换成3.141593,但3.1415914转换后是3.141591,换成3.1515934却还是3.151593,这是什么情况啊???是用c#在.net平台做的。
2 回答
慕娘9325324
TA贡献1783条经验 获得超4个赞
刚刚查阅了MSDN,给出的解释是float的精度为7 位,所以转换会进行四舍五入。
我测试了下,没有发现有楼主描述的问题,测试代码如下:
double d = 3.1215924;
float f = (float)d;
Console.WriteLine(f.ToString());
//输出的结果是:3.121592
d = 3.1415914;
f = (float)d;
Console.WriteLine(f.ToString());
//输出的结果是:3.141591
d = 3.1515934;
f = (float)d;
Console.WriteLine(f.ToString());
//输出的结果是:3.151593
POPMUISE
TA贡献1765条经验 获得超5个赞
强制转换时,使用的是四舍五入。下面代码可以达到你期待的转换效果:
double x = 3.1215924;
float y = (float)(System.Math.Floor(x * 1000000) + 1) / 1000000;
- 2 回答
- 0 关注
- 481 浏览
添加回答
举报
0/150
提交
取消