C# 有理算术,如何表示小数?

C# 有理算术,如何表示小数?,c#,math,C#,Math,是否有任何标准的C#类型或库用于精确的有理算术,如除法 十进制不是我需要的: 1m/3m + 1m/3m + 1m/3m != 1 我在考虑存储两个小数的东西,分子和分母,并且精确地执行乘法和除法。它可以在需要时简化分数,并显式转换为双精度或十进制 看看吧,它至少可以帮助你自己实现它。我曾经用System.Numerics.BigInteger实现过这个,这没什么大不了的。问题是,这种方法可能非常慢,因为每一次乘法或除法都会重复命名符或分母中的位数。在Microsoft.SolverFound

是否有任何标准的C#类型或库用于精确的有理算术,如除法

十进制不是我需要的:

1m/3m + 1m/3m + 1m/3m != 1

我在考虑存储两个小数的东西,分子和分母,并且精确地执行乘法和除法。它可以在需要时简化分数,并显式转换为双精度或十进制

看看吧,它至少可以帮助你自己实现它。我曾经用System.Numerics.BigInteger实现过这个,这没什么大不了的。问题是,这种方法可能非常慢,因为每一次乘法或除法都会重复命名符或分母中的位数。在Microsoft.SolverFoundation.Common中有这样一种类型,但我不喜欢依赖它(没有人拥有该DLL)。无论如何,你也可以轻松地滚动自己的链接。除了@Tobberoth注释的链接外,你还可以检查@user2622016,只需除以GCD即可。素因子分解是一种大规模的过度杀伤力。