|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
说句实话,net网页编程跨平台根本就不是外行人想想的那种,一次编译,处处运行。我对用户的输出做加密,以天生暗码字符串。可是个中一行代码在分歧的框架下给出了分歧的了局。这是含有效户按键的值的部分代码。
按键:1。变量ascii码是49。盘算后’e’和’n’的值:
1
2
3
4
e=103,
n=143,
Math.Pow(ascii,e)%n
上述代码的了局:
1
Math.Pow(ascii,e)%n
值是9.0
1
Math.Pow(ascii,e)%n
值是77.0
Math.Pow()在两个版本中给出了准确的(不异的)的了局。
这是甚么缘故原由酿成的,大概有办理举措吗?
最好回覆:
Math.Pow是针对双精度浮点型数值的;因而,你不该希冀凌驾了局第一个15-17位是正确无误的:
一切的浮点型数值也有一个无限的无效位数,这个位数也决意了浮点型值是怎样照实地靠近实在值。一个双精度值有多达15位的十进制精度,但外部撑持最多17位数。
可是,模运算必要一切的数位都是准确的。在你的程序中,你盘算了49103,这个了局由175位数构成,使得模运算在你的谜底中都没成心义。
为了盘算出准确的值,你应当利用高精度盘算,这由BigInteger类供应(.NET4.0引进)。
编纂修改:正以下面批评中MarkPeters指出的,你应当利用BigInteger.ModPow办法,它恰是用来处置这类运算的:
1
intval=(int)BigInteger.ModPow(49,103,143);//gives114
数据库有很多应用领域,但是如果你单单学数据库的话基本上做数据库管理员比较合适而已,跟领域结合的你还得再学习那些领域知识。(其实数据挖掘我真是不懂,本来这学期开了一门课了。 |
|