Java 中的 BigInteger.mod 相当于 C# 中的 BigInteger.mod

vik*_*kky 2 c# biginteger modulo

在java中:

b1 = new BigInteger("-3896390610386937370574318634931111609708735540536209530871");
b2 = new BigInteger("1000000000000000000000000000000000000000");

// apply mod() method
BigInteger result = b1.mod(b2);
Run Code Online (Sandbox Code Playgroud)

result = 425681365068888390291264459463790469129

当我尝试在 c# 中编写相同的代码时,我得到了另一个值

在 C# 中

BigInteger b1 = 
BigInteger.Parse("-3896390610386937370574318634931111609708735540536209530871");
BigInteger b2 = BigInteger.Parse("1000000000000000000000000000000000000000");
BigInteger result = BigInteger.Remainder( b1, b2);
Run Code Online (Sandbox Code Playgroud)

result = -574318634931111609708735540536209530871

我也尝试过BigInteger % operator。我不确定使用哪种方法或运算符来获得与 java 中相同的值。

Mar*_*oun 6

你可以写:

b1 % b2 < 0 ? (b1 % b2) + b2 : b1 % b2;
Run Code Online (Sandbox Code Playgroud)

包装到您自己的方法:

b1 % b2 < 0 ? (b1 % b2) + b2 : b1 % b2;
Run Code Online (Sandbox Code Playgroud)