搜索
编程论坛
→
.NET专区
→
『 C# 论坛 』
→ 请教一个简单的问题
标题:
请教一个简单的问题
只看楼主
hainandgm
等 级:
侠之大者
威 望:
3
帖 子:111
专家分:475
注 册:2007-6-21
结帖率:
100%
楼主
已结贴
√
问题点数:20 回复次数:8
请教一个简单的问题
各位好,请教一个问题:
double d = 1001389.58 + 123456.78;
d=?,为什么?请详解,谢谢!
搜索更多相关主题的帖子:
double
2010-12-23 18:01
qq1023569223
来 自:湖南科技大学
等 级:
贵宾
威 望:
26
帖 子:2753
专家分:13404
注 册:2010-12-22
第
2
楼
得分: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
等 级:
论坛游侠
帖 子:104
专家分:117
注 册:2006-6-12
第
3
楼
得分:5
没有搞清楚你的问题是什么,我把你的代码测试了一下,
double d = 1001389.58 + 123456.78;
输出是正确的结果啊,即:1124846.36
没有问题。
2010-12-23 20:16
hainandgm
等 级:
侠之大者
威 望:
3
帖 子:111
专家分:475
注 册:2007-6-21
第
4
楼
得分:0
非常感谢楼上的回答,如果在"Console.WriteLine(d);"设一个断点,你再看看局部变量窗中d的值是多少,或者把d值与1124846.36做个比较,看看结果是否为真?
2010-12-23 20:20
c1_wangyf
等 级:
小飞侠
威 望:
7
帖 子:665
专家分:2832
注 册:2010-5-24
第
5
楼
得分:10
的确,在计算后d和1124846.36有一点差异,主要是d是double类型,小数点后面保留的位数比较多?!
2010-12-23 21:23
hainandgm
等 级:
侠之大者
威 望:
3
帖 子:111
专家分:475
注 册:2007-6-21
第
6
楼
得分:0
到现在我也不是很清楚,应该是double类型的原因吧.
由于它的取值范围大,但是它存在精度损失,因此使用double类型的算数运算和赋值运算的结果在不同的平台上可能稍微不同.
所以在PC项目或MCU项目中我尽可能避免使用double类型,用int/long类型或decimal类型来替换运算.
我希望在这里能得到更好的理解,谢谢各位.
2010-12-24 09:14
c1_wangyf
等 级:
小飞侠
威 望:
7
帖 子:665
专家分:2832
注 册:2010-5-24
第
7
楼
得分:0
是的,在不同的情况下使用不同的数据类型,所以有(int,float,char。。。)这么多类型存在
2010-12-24 09:26
hainandgm
等 级:
侠之大者
威 望:
3
帖 子:111
专家分:475
注 册:2007-6-21
第
8
楼
得分:0
我之前没有发现过这种情况,最近在算数运算中发现的,后来采用了其它方式解决了问题,可我还是想在这里得到一些理解,谢谢!
2010-12-24 10:11
q642507
来 自:山西运城
等 级:
新手上路
帖 子:12
专家分:6
注 册:2010-12-23
第
9
楼
得分:0
今天长见识了!
超越自己!
2010-12-24 11:50
9
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-329720-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.146890 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved