首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于C#中的不同.NET版本,模运算符(%)给出不同的结果

对于C#中的不同.NET版本,模运算符(%)给出不同的结果
EN

Stack Overflow用户
提问于 2014-01-31 21:53:03
回答 4查看 8.1K关注 0票数 88

我正在对用户的输入进行加密,以生成密码字符串。但是一行代码在框架的不同版本中给出了不同的结果。用户按下键值的部分编码:

按键: 1.变量ascii为49。经过计算后的'e‘和'n’的值:

代码语言:javascript
运行
复制
e = 103, 
n = 143,

Math.Pow(ascii, e) % n

上述代码的结果:

.NET 3.5中的

  • (C#)

Math.Pow(ascii,e) %n

提供9.0.

  • In .NET 4 (C#)

Math.Pow(ascii,e) %n

提供77.0.

Math.Pow()在两个版本中都给出了正确(相同)的结果。

原因是什么?有解决方案吗?

EN

Stack Overflow用户

发布于 2014-01-31 22:08:37

也许最好自己只用整数算术来计算它。类似于:

代码语言:javascript
运行
复制
int n = 143;
int e = 103;
int result = 1;
int ascii = (int) 'a';

for (i = 0; i < e; ++i) 
    result = result * ascii % n;

您可以将性能与其他答案中发布的BigInteger解决方案的性能进行比较。

票数 5
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21481764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档