C#中模运算符(%)在不同的.NET版本为什么会有不同结果?
2014-03-18 16:12
302 查看
本文由 伯乐在线 - EluQ 翻译自 stackoverflow。欢迎加入技术翻译小组。转载请参见文章末尾处的要求。
我对用户的输入做加密,以生成密码字符串。但是其中一行代码在不同的框架下给出了不同的结果。这是含有用户按键的值的部分代码。按键:1。变量ascii码是49。计算后’e’和’n’的值:
上述代码的结果:在.NET3.5(C#)
值是9.0在.NET4(C#)
值是77.0Math.Pow()在两个版本中给出了正确的(相同的)的结果。这是什么原因造成的,或者有解决办法吗?最佳回答:Math.Pow 是针对双精度浮点型数值的;因此,你不应期望超过结果第一个15-17位是准确无误的:所有的浮点型数值也有一个有限的有效位数,这个位数也决定了浮点型值是如何如实地接近真实值。一个双精度值有多达15位的十进制精度,但内部支持最多17位数。但是,模运算需要所有的数位都是精确的。在你的程序中,你计算了49103,这个结果由175位数组成,使得模运算在你的答案中都没有意义。为了计算出正确的值,你应该使用高精度计算,这由BigInteger类提供(.NET 4.0引入)。编辑修正:正如下面评论中Mark Peters指出的,你应该使用BigInteger.ModPow方法, 它正是用来处理这类运算的:
原文链接: stackoverflow 翻译: 伯乐在线 - EluQ
译文链接: http://blog.jobbole.com/61444/
我对用户的输入做加密,以生成密码字符串。但是其中一行代码在不同的框架下给出了不同的结果。这是含有用户按键的值的部分代码。按键:1。变量ascii码是49。计算后’e’和’n’的值:
译文链接: http://blog.jobbole.com/61444/
相关文章推荐
- 为什么在VS2010中编写.net 2.0程序可以调用C#2.0以上版本特性?
- .net中不同的方法相同的结果
- .NET系列 之 借鉴的两种方式和不同结果
- 一个调查结果(在下一个版本的VS/C#中你想要什么?)
- release版本和debug版本的差异 joyGetPosEx 返回结果不同
- 不同.net版本实现单点登录
- 如何编译同时引用两个不同版本的Assembly的C#程序
- .net 程序运行在不同框架版本下的支持配置(主要是.net4.0 与 .net2.0的兼容)
- 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结
- 如何在不同.net版本实现单点登录
- 为什么.Net需要公共运行库,虚拟器,C#,XML,SOAP[网摘]
- C#开发的WinForm程序自适应.Net2.0及.Net4.0(32位和64位版本)
- C#自动判断Excel版本使用不同的连接字符串
- C#去读不同版本的excel文件
- Windows系统上的.Net版本和.NETFramework的C#版本
- Deep Learning 31: 不同版本的keras,对同样的代码,得到不同结果的原因总结
- .Net ( C# ) 调用控制台程序并取得输出结果
- C#与PHP的md5计算结果不同的解决方法
- mongoDB不同版本的C#Drivers更换问题
- c#中为什么能创建同名线程,同名线程如何区分呢,比如设置两个同名线程为不同优先级