相关疑难解决方法(0)

浮点算法 - 双类型的模算子

所以我试图弄清楚为什么模运算符返回如此大的异常值.

如果我有代码:

double result = 1.0d % 0.1d;

它会给出一个结果0.09999999999999995.我期望值的价值0

注意使用除法运算符不存在此问题 - double result = 1.0d / 0.1d;

将给出结果10.0,意味着剩下的应该0.

让我明确一点:对于存在错误我并不感到惊讶,我很惊讶这个错误与游戏中的数字相比非常.0.0999~ = 0.1和0.1处于相同数量级0.1d并且仅相差一个数量级1.0d.它不像你可以将它与double.epsilon相比,或者说"如果它的<0.00001差异则相等".

我已经在StackOverflow上阅读了这个主题,在下面的帖子中 三个,其中包括.

任何人都可以建议解释为什么这个错误如此之大?任何建议,以避免将来遇到问题(我知道我可以使用十进制,但我担心它的性能).

编辑:我应该特别指出,我知道0.1是一个无限重复的二进制数字系列 - 这与它有什么关系吗?

c# floating-point precision

9
推荐指数
1
解决办法
9661
查看次数

C#浮点前的一个数字

我需要以某种方式在浮点之前得到一个数字并在该浮点之后得到值.例:

之前:21 2.12345 ;
之后:2.12345

有任何想法吗?

c#

0
推荐指数
1
解决办法
118
查看次数

C#中的Mod运算符

C# 中是否有用于 RSA 算法的 mod 运算符?我一直在使用 % ,因为我认为这可以用作 mod,但是我得到的 c 和 m 的答案不正确,所以我意识到 % 不起作用。

      double e = 13;
      double d; //decryption

      double de = 7; 

      d = ((de * euiler) + 1) / e;

      double message = 25;
      double c = Pow(message, e) % n;
      double m = Pow(c, d) % n;
Run Code Online (Sandbox Code Playgroud)

c# rsa mod

-3
推荐指数
1
解决办法
232
查看次数

标签 统计

c# ×3

floating-point ×1

mod ×1

precision ×1

rsa ×1