刚刚学习C#.
我不明白为什么有人会在使用浮标或双打时使用整数.
浮点数将加/减整数和十进制数,那么为什么有人会打扰使用普通的旧整数?
看起来像浮动或双重将照顾整数可以做的任何事情与能够处理的奖金.数字也..
谢谢!
Dav*_*rtz 11
主要原因与我们通常更喜欢使用整数分数而不是固定精度小数的原因相同.对于有理分数,(1/3)乘以3总是1.(1/3)加(2/3)总是1.(1/3)乘以2是(2/3).
为什么?因为整数分数是精确的,就像整数一样精确.
但是对于固定精度的实数 - 它并不那么漂亮.如果(1/3)是.33333,那么3次(1/3)将不是1.如果(2/3)是.66666,则(1/3)+(2/3)将不是1.但是如果(2/3)是.66667,则(1/3)乘以2将不是(2/3)而1减去(1/3)将不是(2/3).
当然,你无法通过使用更多的地方来解决这个问题.没有小数位数将允许您准确表示(1/3).
浮点是一种固定精度的实数格式,就像我上面的固定精度小数一样.它并不总是遵循您可能期望的天真规则.请参阅经典论文"每个计算机科学家应该知道的关于浮点算术的内容".
要回答您的问题,首先应该尽可能使用整数,并且只在必要时使用浮点数.而且你应该永远记住,浮点数的精度有限,并且比较两个浮点数以确定它们是否相等可以得出你可能没想到的结果.
| 归档时间: |
|
| 查看次数: |
6320 次 |
| 最近记录: |