为了账号安全,请及时绑定邮箱和手机立即绑定

强制转换出问题??!!

强制转换出问题??!!

子衿沉夜 2018-10-10 05:06:52
我们上课做了强制转换的示例,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



查看完整回答
反对 回复 2018-10-22
?
POPMUISE

TA贡献1765条经验 获得超5个赞

强制转换时,使用的是四舍五入。下面代码可以达到你期待的转换效果:

 

double x = 3.1215924;
float y = (float)(System.Math.Floor(x * 1000000) + 1) / 1000000;


查看完整回答
反对 回复 2018-10-22
  • 2 回答
  • 0 关注
  • 481 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信