强制转换出问题??!!

我们上课做了强制转换的示例,double->float,3.1215924转换成3.141593,但3.1415914转换后是3.141591,换成3.1515934却还是3.151593,这是什么情况啊???是用c#在.net平台做的。

子衿沉夜
浏览 482回答 2
2回答

慕娘9325324

刚刚查阅了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

强制转换时,使用的是四舍五入。下面代码可以达到你期待的转换效果: double x = 3.1215924;float y = (float)(System.Math.Floor(x * 1000000) + 1) / 1000000;
打开App,查看更多内容
随时随地看视频慕课网APP