标题:请教一个简单的问题
只看楼主
hainandgm
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:111
专家分:475
注 册:2007-6-21
结帖率:100%
已结贴  问题点数:20 回复次数:8 
请教一个简单的问题
各位好,请教一个问题:
double d = 1001389.58 + 123456.78;
d=?,为什么?请详解,谢谢!
搜索更多相关主题的帖子: double 
2010-12-23 18:01
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
得分:5 
using System;
namespace c1
{
    class MyClass
    {
        public static void Main()
        {
          double d = 1001389.58 + 123456.78;
          Console.WriteLine(d);
          Console.ReadKey();
        }
    }
}  //结果是1124846.36
我开始还怀疑这里面有什么误会。运行一下,原来就是直接相加呢。小数位应该没有超出double输出的默认个数。

   唯实惟新 至诚致志
2010-12-23 19:53
liubaoen
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:104
专家分:117
注 册:2006-6-12
得分:5 
没有搞清楚你的问题是什么,我把你的代码测试了一下,
double d = 1001389.58 + 123456.78;
输出是正确的结果啊,即:1124846.36
没有问题。
2010-12-23 20:16
hainandgm
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:111
专家分:475
注 册:2007-6-21
得分:0 
非常感谢楼上的回答,如果在"Console.WriteLine(d);"设一个断点,你再看看局部变量窗中d的值是多少,或者把d值与1124846.36做个比较,看看结果是否为真?
2010-12-23 20:20
c1_wangyf
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:7
帖 子:665
专家分:2832
注 册:2010-5-24
得分:10 
的确,在计算后d和1124846.36有一点差异,主要是d是double类型,小数点后面保留的位数比较多?!
2010-12-23 21:23
hainandgm
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:111
专家分:475
注 册:2007-6-21
得分:0 
到现在我也不是很清楚,应该是double类型的原因吧.
由于它的取值范围大,但是它存在精度损失,因此使用double类型的算数运算和赋值运算的结果在不同的平台上可能稍微不同.
所以在PC项目或MCU项目中我尽可能避免使用double类型,用int/long类型或decimal类型来替换运算.

我希望在这里能得到更好的理解,谢谢各位.
2010-12-24 09:14
c1_wangyf
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:7
帖 子:665
专家分:2832
注 册:2010-5-24
得分:0 
是的,在不同的情况下使用不同的数据类型,所以有(int,float,char。。。)这么多类型存在
2010-12-24 09:26
hainandgm
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:111
专家分:475
注 册:2007-6-21
得分:0 
我之前没有发现过这种情况,最近在算数运算中发现的,后来采用了其它方式解决了问题,可我还是想在这里得到一些理解,谢谢!
2010-12-24 10:11
q642507
Rank: 1
来 自:山西运城
等 级:新手上路
帖 子:12
专家分:6
注 册:2010-12-23
得分:0 
今天长见识了!

超越自己!
2010-12-24 11:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-329720-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.059020 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved