c# - Java 中的 BigInteger.mod 等效于 C#

标签 c# biginteger mod

在Java中:

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

// apply mod() method
BigInteger result = b1.mod(b2);

结果 = 425681365068888390291264459463790469129

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

在 C# 中

BigInteger b1 = 
BigInteger.Parse("-3896390610386937370574318634931111609708735540536209530871");
BigInteger b2 = BigInteger.Parse("1000000000000000000000000000000000000000");
BigInteger result = BigInteger.Remainder( b1, b2);

结果 = -574318634931111609708735540536209530871

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

最佳答案

你可以这样写:

b1 % b2 < 0 ? (b1 % b2) + b2 : b1 % b2;

包装成你自己的方法:

public static int Mod(int b1, int b2)
{
    var r = b1 % b2;
    return r < 0 ? r + b2 : r;
}

关于c# - Java 中的 BigInteger.mod 等效于 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73123283/

相关文章:

c# - 为什么从标准类型继承时会收到警告 CA2229(实现序列化构造函数)

c# - 使用按钮选择 Telerik 网格 - MVVM

biginteger - 有效检测有理数是否相等

swift - 大整数 Swift 4.0

math - XOR 和 mod 的交换性

java - BigInteger 方法 mod() 性能很差。对于大量的数据是否有更好的权衡?

c# - 如何从 System.DateTime.Now.Hour 获取 24 小时制?

c# - 图表的轴值格式

javascript - javascript中如何处理大数字

java - 乘以没有大整数的大整数