呵呵,我也测了好久,以为自己出现buger呢,不过我是在101的时候发现的
另外楼主的时间精确度似乎也很低
呵呵,我也测了好久,以为自己出现buger呢,不过我是在101的时候发现的
另外楼主的时间精确度似乎也很低
斑竹,你的程序精确度太差了。虽然速度很快。但是你的程序算到21!就开始错了,不信你看看。
正确的1! + 2! + 3! + 4! + 5! +...+ 20!=2,561,327,494,111,820,313
而21!=51,090,942,171,709,400,000
你的程序算1! + 2! + 3! + 4! + 5! +...+ 21!=53,652,269,665,821,260,313 多出了40000。
在21的时候就有这么大的误差。那到后面误差不是更大?
我说怎么跟我程序算出来的总是不一样。
你用双精度变量做的答案来验证我的程序?
给楼上的一个小提示:6!=720;5!=120;4!=24;3!=6;2!=2;1!=1;
那么也就是说从5!开始所有数的接一乘值的个位肯定为零(至于为什么不用我说吧?),那么N!连加的个位数肯定为3
那么为什么你的会出现个位为0呢?我估计你使用的是双精度变量,而且你还非常的不了解双精度变量的特性。
建议你试试把任意一个接近双精度变量最大值1.79769313486232E308放入一个双精度变量A中,再用MsgBox Format(A, "###,###")试试,这样你就可以很明显的看出到底为什么双精度变量只用了8个字节却能表示比18446744073709551615(十六进制&HFFFFFFFFFFFFFFFF)更大的值了。
你用双精度变量做的答案来验证我的程序?
给楼上的一个小提示:6!=720;5!=120;4!=24;3!=6;2!=2;1!=1;
那么也就是说从5!开始所有数的接一乘值的个位肯定为零(至于为什么不用我说吧?),那么N!连加的个位数肯定为3
那么为什么你的会出现个位为0呢?我估计你使用的是双精度变量,而且你还非常的不了解双精度变量的特性。
建议你试试把任意一个接近双精度变量最大值1.79769313486232E308放入一个双精度变量A中,再用MsgBox Format(A, "###,###")试试,这样你就可以很明显的看出到底为什么双精度变量只用了8个字节却能表示比18446744073709551615(十六进制&HFFFFFFFFFFFFFFFF)更大的值了。
支持Joforn的分析!~
同样支持敢于对向前辈发出挑战和怀疑的所有green hand.!~
对了,Joforn你是不是用上述规律提高计算效率的?
[此贴子已经被作者于2007-6-27 20:47:41编辑过]
谢谢,又知道一点东西了,我去分析分析
支持Joforn的分析!~
同样支持敢于对向前辈发出挑战和怀疑的所有greed hand.!~
对了,Joforn你是不是用上述规律提高计算效率的?
我只是设计了一个粗糙算法,其精确度为1
郁闷,又换了个算法。精度和你一样
但是速度慢了100倍。。。。。。。。。