提问人:Nick 提问时间:3/14/2021 最后编辑:Nick 更新时间:3/14/2021 访问量:325
C# 科学计算 - 具有许多小数的大数
C# Scientific calculation - big number with many decimals
问:
我有一个问题,我需要建议:我必须用大数字进行计算,范围为(正/减,有符号);整数部分:和精度,小数部分:。大多数时候,我只进行简单的简单操作(add/subtr/mult/div),其中我可以忽略小数部分的大多数数字(仅使用 8 位小数) - 但是,在许多情况下,我必须采用“整体”小数并以该精度进行计算(并存储用于后续计算的结果)。
数字示例:70*(10^27)
9*(10^-31)
66898832014839425790021345548 . 8499970865478385639546957014538
我看到了关于十进制与长整型等的文章。 我应该使用十进制还是应该创建自定义类型?如果后者是,我该如何进行简单的算术运算?(仅接受最后一位小数的四舍五入) 我的项目都是 C# 和 SQL Server;提前非常感谢你。
答:
4赞
Boris Sokolov
3/14/2021
#1
C# 中没有标准的实现,但您可以基于 BigInteger 创建自己的库,例如
public BigDecimal(BigInteger integer, BigInteger scale)
您还可以引用一些第三方库,例如 GMP 及其 .Net 分支/端口,如 Math.Gmp.Native.NET、libgmp 等。
有一些自定义库,正如 Franz Gleichmann 在他的评论中已经提到的那样:BigDecimal、AngouriMath
对于 SQL Server,大多数库都使用字符串来存储此类数据。例如,在 Java 中有 BigDecimal,它通过 JDBC 映射到字符串。
评论
1赞
Nick
3/14/2021
那绝对很棒,非常感谢,我会立即尝试!
评论