C# 中的 Java BigDecimal 类的等效项是什么?
2022-08-31 15:56:10
BigDecimal
是包中的一个类,对于处理一定规模的大数字有很多好处。在 c# 中是否存在具有此功能的等效类或数据类型。java.math
BigDecimal
是包中的一个类,对于处理一定规模的大数字有很多好处。在 c# 中是否存在具有此功能的等效类或数据类型。java.math
就在最近,我还需要在C#中使用任意精度的小数,并遇到了这里发布的想法:https://stackoverflow.com/a/4524254/804614
然后,我完成了草稿,以支持所有基本的算术和比较运算符,以及所有典型数值类型和一些指数方法之间的转换,这是我当时需要的。
它当然不全面,但功能非常强大,几乎随时可用。由于这是一夜编码的结果,我不能保证这个东西没有错误或完全准确,但它对我来说效果很好。无论如何,我想在这里发布它,因为我没有找到任何其他方法在C#中使用任意精度的小数,而不需要包含大量库(大多数甚至不是.net,而是c ++的包装器),它们带有各种不必要的东西。
基本思想是使用 .NET 4.0 的 BigInteger 类型和以 10 为基数的指数 (Int32) 构建具有任意大尾数的自定义浮点类型。
如果您发现错误/不准确,有建议或任何建设性的东西,请随时直接编辑我的帖子或发表评论,以便我可以改进答案。
我不完全确定这是否是放置这个东西的最佳位置,但这是SO关于这个主题的首要问题之一,我真的很想分享我的解决方案。;)
编辑:我将实现移动到GitHubGist:https://gist.github.com/JcBernack/0b4eef59ca97ee931a2f45542b9ff06d
C#只构建了它(在.NET Framework 4中)。BigInteger
您的任务是否足够精确?这是一个 128 位数字,可以保存介于 ±1.0 × 10−28 到 ±7.9 × 1028 之间的值。decimal