c#比较两个数的大小是不是可以直接用><=判断,还是要用相减后判断是否>0这种方法

昵称是可以中文吗 2011-04-09 01:20:53
比如我有一个double类型的数字a,要判断是否大于0直接
if(a>0) ....
我记得以前学习java还是c,老师说过最好用相减的
有没有例子或链接,这两种方法在c#有区别吗
...全文
1994 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
feiwoshi 2011-04-12
  • 打赏
  • 举报
回复
精度问题
遥望那些年 2011-04-12
  • 打赏
  • 举报
回复
实现了IComparable的接口类型一般都会重载><=,对这些类型可以直接使用><=
cnxry 2011-04-12
  • 打赏
  • 举报
回复
为了顺利拿分,也为了避免你去翻书都翻不明白
补充一下
Double 值类型表示一个值介于 -1.79769313486232e308 和 +1.79769313486232e308 之间的双精度 64 位数字

float是单精度,也就是double的一半

一般情况下都不会用到double,不会需要到那么高的精度

只要保持程序中值类型的一致性,就不会发生需要你描述的减法判断的问题

如果你用int类型去和double类型比较的话肯定是不准确,精度不一样

所以问题的关键是对变量类型的精度的理解
cnxry 2011-04-12
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 scauscnu 的回复:]

引用 3 楼 cnxry 的回复:
不会出错,直接比较就可以
double a=0.00001

if(a>0)
MessageBox.Show("true");
else
MessageBox.Show("false");

随便建的winform项目,代码复制到from_load事件里,运行就可以测试了

谢谢啦,我不单是问这个实例,不知道原因知道结果难道每次都要测试
……
[/Quote]

你们老师用教白痴的方法教你,你就要用白痴方法去实施?

他不告诉你原理是他不负责,你不自己去探究原理,是你对自己不负责

不好意思,说话比较直接,但是如果你稍微看下书也不会有这样的想法

相同类型的变量大小比较你直接用运算符(<,>)就可以

如果你要问0.00001或者0.0000000000000001该用什么类型的变量来存储建议你去翻下书上最基础的变量类型中

float,double,long相关看看
休闲中 2011-04-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cnxry 的回复:]
不会出错,直接比较就可以
double a=0.00001

if(a>0)
MessageBox.Show("true");
else
MessageBox.Show("false");

随便建的winform项目,代码复制到from_load事件里,运行就可以测试了
[/Quote]

这个试试就知道结果了
Orangechenzhe 2011-04-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cnxry 的回复:]
不会出错,直接比较就可以
double a=0.00001

if(a>0)
MessageBox.Show("true");
else
MessageBox.Show("false");

随便建的winform项目,代码复制到from_load事件里,运行就可以测试了
[/Quote]

赞成。
xiaoqiu1234 2011-04-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 andyqq8 的回复:]
看似低级,实则高深。。。同问
[/Quote]
sxldfang 2011-04-09
  • 打赏
  • 举报
回复
老师说的应该是浮点类型的数据

比如 x==y

可表示成 | x-y | < 0.00001 之类的吧!
hinada99 2011-04-09
  • 打赏
  • 举报
回复
试后再说~~
KEDAXIUCAI 2011-04-09
  • 打赏
  • 举报
回复
注意数据类型的精度 否则会内存运算异常 导致位数出错
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 wuyazhe 的回复:]

精度,浮点数的精度。所以不要用==比较,用| x-y | < 0.00001。这个是对的。
[/Quote]
恩,单单一个浮点数跟其他类型的比较久应该不用了吧,谢谢啦
兔子-顾问 2011-04-09
  • 打赏
  • 举报
回复
精度,浮点数的精度。所以不要用==比较,用| x-y | < 0.00001。这个是对的。
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sxldfang 的回复:]

老师说的应该是浮点类型的数据

比如 x==y

可表示成 | x-y | < 0.00001 之类的吧!
[/Quote]
REALLY? 谢谢
  • 打赏
  • 举报
回复
和数据类型有关.在.net里, float和double都不出错,long要出错
cnxry 2011-04-09
  • 打赏
  • 举报
回复
不会出错,直接比较就可以
double a=0.00001

if(a>0)
MessageBox.Show("true");
else
MessageBox.Show("false");

随便建的winform项目,代码复制到from_load事件里,运行就可以测试了
rongerhai 2011-04-09
  • 打赏
  • 举报
回复
两种方法都可以。直接用><=来判断,其实在系统内部是加减运算。所以用加减运算要好一点。
  • 打赏
  • 举报
回复
直接比较
.Net运算符很多都是经过重载的
keyouea 2011-04-09
  • 打赏
  • 举报
回复
跟精度有关
bloodish 2011-04-09
  • 打赏
  • 举报
回复

double d = 0.000001;
if(Math.Abs(d-1e-6) > 0)
{
//todo
}
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 andyqq8 的回复:]
看似低级,实则高深。。。同问
[/Quote]
记得以前老师说过两个数直接比较有时会错误的,不知是c还是java,忘了。
加载更多回复(2)

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧