是对C#小数类型的任何更容易上班,我们会直觉地想到比其他浮点类型的相等比较?C#小数类型平等
C#小数类型平等
回答
我想这取决于你的直觉。我假设有些人会想到将1除以3作为分数1/3的结果,而其他人会认为更多地沿着“哦,1除以3不能用十进制数表示,必须决定保留多少位数字,让我们以0.333为单位“。
如果您以前一种方式思考,Decimal
对您没有多大帮助,但如果您以后一种方式思考,并在需要时明确四舍五入,则更有可能是“直觉上”没有主题的操作以十进制舍入误差,例如除以10,将表现得如你所料。对于大多数人来说,这比二进制浮点类型的行为更直观,其中2的幂运行得很好,但是10的幂没有。
基本上没有。所述Decimal
类型简单地表示一个专门的排序,其被设计来减少舍入误差特别是在底座10系统浮点数的。也就是说,Decimal
的内部表示实际上是以10为底(denary),而不是通常的二进制。因此,这对于货币计算来说是一种更合适的类型 - 尽管当然不限于这种应用。
从MSDN page为以下结构:
十进制值类型表示十进制数范围从正到79,228,162,514,264,337,593,543,950,335负79,228,162,514,264,337,593,543,950,335。十进制值类型适用于需要大量重要整数和小数位并且没有舍入误差的财务计算。十进制类型并不排除舍入的需要。相反,它最大限度地减少了四舍五入造成的错误。例如,下面的代码产生0.9999999999999999999999999999而不是1的结果。
十进制数是一个浮点值,它包含一个符号,一个数值(其中值中的每个数字位于0到9之间)以及一个缩放因子,用于指示分隔数字值的整数部分和小数部分的浮点小数点的位置。
Ahem。为什么?这个答案完全正确,谢谢。 – Noldorin
- 1. 代数数据类型和平等
- 2. 平等感性类型
- 3. 类型平等检查
- 4. C++中等效数据类型的C#
- 5. F#平等/上一个泛型类型
- 6. 长型平等
- 7. C# - 类型大小
- 8. MethodInfo声明类型的平等
- 9. scala更高类型和scalatic平等
- 10. 动态平等类型的对象
- 11. 平等参数类型可变参数模板功能
- 12. 斯卡拉类型平等和路径依赖的类型
- 13. 平均小型
- 14. C#平等检查
- 15. 小学C++类型混淆
- 16. 针对不同数值公差的不同平等[DenseVector]类型
- 17. 将c#数据类型转换为等效的java数据类型
- 18. 数据类平等科特林
- 19. C++原子与非平凡类型?
- 20. C#.NET异步等待返回类型
- 21. 的typedef C和类型等价
- 22. C中有结构等价类型吗?
- 23. C#数学类型的数学类型?
- 24. int数组的大小对类型等价性的影响
- 25. C数据类型的最小保证大小/范围
- 26. C#词典平等要求
- 27. C++:在平等的测试
- 28. 大小的数组如在C++函数的参数类型
- 29. 小整数类型长度
- 30. C++中的跨平台原始数据类型
-1因为这不是真的回答这个问题,除了重新提供我以前的答案。 – Noldorin
@Noldorin - 我不同意这是一个重复,因为你的回答不包括二进制算术对大多数人来说不直观的问题。另外,我不同意你回答“否”,认为平等问题更有可能按预期工作。不要说使用平等是一个好主意,但看看例如由于数字类型为二进制而导致问题的各种网站上的困惑Javascript用户的数量 –
与直观无关......这仅仅是内部表示和完成方式,我将从MSDN中讨论并引用。咩。 – Noldorin