带十进制结果的C#BigInteger

带十进制结果的C#BigInteger,c#,math,biginteger,calculation,int128,C#,Math,Biginteger,Calculation,Int128,我试图用大量的数字来计算。例如: 22352794900029489130063309832192 / 1000000000000000000000000000000 我希望结果是22.35279490(首选十进制),但如果使用BigInteger,结果将四舍五入到22 NET是否有类似于uint128的功能 什么是最好的做法? < P>为了保持精度,考虑将BigTigual值转换为双倍先,然后除法。 BigInteger a = BigInteger.Parse("22352794

我试图用大量的数字来计算。例如:

22352794900029489130063309832192 / 1000000000000000000000000000000
我希望结果是22.35279490(首选十进制),但如果使用BigInteger,结果将四舍五入到22

NET是否有类似于uint128的功能


什么是最好的做法?

< P>为了保持精度,考虑将BigTigual值转换为双倍先,然后除法。

BigInteger a = BigInteger.Parse("22352794900029489130063309832192");
BigInteger b = BigInteger.Parse("1000000000000000000000000000000");
double da = (double)a;
double db = (double)b;
double result = da / db;

也看看如果你把每一个都转换成一个双精度,然后除以会发生什么?好的,谢谢。我想你赢了。满足我需求的最简单解决方案。你知道扭转这一过程的好办法吗?现在我有22.35279490,但我需要*10000000000000000000000000000。结果应为:223527949000000000000000,但结果为:2235279494058010475075268376185(加起来的随机数)整数上的除法未闭合。您可能需要重新考虑通用师作战的精度要求。或者考虑使用一个Rational类,其中分子和分母是BigGANT值。以固定精度更改基数(如有理数的十进制展开)可能会导致重复小数,通常通过截断处理,如IEEE 754浮点。