用VBS精确计算2的100次方的代码

既然Python可以计算2的100次方,那么我就要用VBS实现。不过这个效率嘛,计算2的10000次方Python用了0.009013秒,VBS用了120.9805秒,不是一个等级的,我就不多说什么了。

直接上代码:


复制代码 代码如下:

'Date: 2010/10/27
'Author: Demon
'QQ: 380401911
'E-mail: still.demon@gmail.com

begin = Timer
n = 1
For i = 1 To 100
n = multiple(n, 2)
Next
finish = Timer
WScript.Echo n
WScript.Echo finish - begin

'Grade school multiplication, Algorithm 14.12
'http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf
Function multiple(byVal x, byVal y)
Dim n, t, i, j, z, w()
n = Len(x) - 1
t = Len(y) - 1
ReDim w(n + t + 1)

x = CStr(x) : y = CStr(y)

For i = 0 To UBound(w)
w(i) = "0"
Next

For i = 0 To t
Dim c : c = 0
Dim uv : uv = 0

For j = 0 To n
uv = (w(i+j)-"0") + c + _
(Mid(x,n-j+1,1)-"0") * (Mid(y,t-i+1,1)-"0")
w(i+j) = CStr(uv Mod 10 + "0")
c = uv \ 10
Next

w(i+n+1) = CStr(uv \ 10 + "0")
Next

z = Join(w,"")
z = StrReverse(z)
Do While Left(z,1) = "0"
z = Mid(z,2)
Loop

multiple = z
End Function

原文:http://demon.tw/programming/vbs-long-multiplication.html

时间: 2011-01-18

用VBS精确计算100的阶乘的实现代码

今天又无聊的逛了一下搜搜问问,找到这样一个问题: 有谁能提供vbs里20的阶乘的详细程序 下面有人给出了这样的答案: 复制代码 代码如下: function jx(x) j=1 for i=2 to x j=j*i next jx=j end function msgbox jx(20) 运行一下上面的程序,输出2.43290200817664E+18.笑而不语,再次证明了我之前的结论,在这种网站上回答问题的,大部分水平都不咋地. 其实之前在<用VBS精确计算2的100次方>我已经写过了VBS

python计算n的阶乘的方法代码

整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,0的阶乘为1.即:n!=1×2×3×...×n. 首先导入math模块,然后调用factorial()函数来计算阶乘. 1 math.factorial(x) import math value = math.factorial(x) 2. reduce函数 def factorial(n): return reduce(lambda x,y:x*y,[1]+range(1,n+1)) 3. 递归实现 def factori

C#精确计算年龄的方法分析

本文实例讲述了C#精确计算年龄的方法.分享给大家供大家参考.具体如下: 该源码在vs2010测试通过 复制代码 代码如下: using System; using System.Collections.Generic; using System.Text; namespace PublicClass {     public static class CalculationDate     {         /// <summary>         /// 由两个日期计算出年龄(岁.月.天

js中精确计算加法和减法示例

/精确计算加法和减法.例如0.1+0.2=0.3或 0.1-0.2=-0.1 复制代码 代码如下: function addFn(dataOne,dataTwo){ var dataOneInt=dataOne.toString().split(".")[0]; var dataOneFloat=""; var dataTwoInt=dataTwo.toString().split(".")[0]; var dataTwoFloat="

PHP精确计算功能示例

本文实例讲述了PHP精确计算功能.分享给大家供大家参考,具体如下: 引言:一定要确保数据的准确性.这是一个好的程序员的基本素养. <?php /** * 精确加法 * @param [type] $a [description] * @param [type] $b [description] */ function math_add($a,$b,$scale = '2') { return bcadd($a,$b,$scale); } /** * 精确减法 * @param [type] $a

Python-while 计算100以内奇数和的方法

如下所示: sum = 0 n = 99 while n > 0: sum = sum + n n = n - 2 print(sum) 只要条件满足,就不断循环,条件不满足时退出循环.比如我们要计算100以内所有奇数之和,可以用while循环实现: 在循环内部变量n不断自减,直到变为-1时,不再满足while条件,循环退出. #100以内奇数的和 sum = 0 for i in range(0,100): if i%2==1: sum += 1 print(sum) 以上这篇Python-w

详解js加减乘除精确计算

JS无法进行精确计算的bug 在做CRM,二代审核需求审核详情页面时.需要按比例(后端传类似0.8的小数)把用户输入的数字显示在不同的地方. 在做dubheInvest = invest * (1 - ratio);运算时发现问题.具体如下: 示例代码: console.log( 1 - 0.8 ); //输出 0.19999999999999996 console.log( 6 * 0.7 ); //输出 4.199999999999999 console.log( 0.1 + 0.2 );

JavaScript使用math.js进行精确计算操作示例

本文实例讲述了JavaScript使用math.js进行精确计算操作.分享给大家供大家参考,具体如下: javascript进行浮点运算会有尾差,比如算个0.1+0.7试试,得到的不是0.8 .这个问题可以使用math.js解决. Math.js是一款开源的JavaScript和Node.js数学库,用于处理数字.大数.复数.单位和矩阵. 官网: http://mathjs.org/ cdn地址:https://cdnjs.cloudflare.com/ajax/libs/mathjs/5.0.

JavaScript使用递归和循环实现阶乘的实例代码

[实现方法] 1.利用while循环来做,当然for循环也可以. 2.递归 [代码内容] 偷懒,直接用onkeyup事件来限制来页面的输入 循环代码: //第一种方法 while循环 oCount.onclick = function (){ var oNum = document.getElementById('num').value; oNum = Number(oNum); if(oNum <= 1){ oBox.innerHTML = 1; } var oRes = 1; while(o