中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-09 14:22
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,254 会员排行
DOS批处理 & 脚本技术(批处理室) » 【厉害】纯批计算圆周率,精确到小数点100位
可打印版本  3,529 / 32
第16楼 zh159 发表于 2008-04-30 17:11
金牌会员 发帖 1,467 积分 3,687
这个VBS的很快,不过受VBS限制位数


如果转为批处理则为:

可惜set/a不能计算小数
第17楼 plp626 发表于 2008-04-30 17:25
银牌会员 发帖 1,020 积分 2,278
Originally posted by zh159 at 2008-4-30 05:11 PM:
这个VBS的很快,不过受VBS限制位数


如果转为批处理则为:
第18楼 slore 发表于 2008-04-30 23:35
铂金会员 发帖 2,478 积分 5,212
'将那个C的代码用VBS处理了下,速度很快,因为是
'每位用一个数处理的,所以没有位数限制。
'恩,记得用CScript调用……
Dim b, c, d, e,n, f()
n = 100 '在这里定义位数
c = n / 4 * 14
ReDim f(c)
For b = 0 To c
f(b) = 2000
Next

Do While
(c)
b = c
d = f(b) * 10000
f(b) = d Mod (b * 2 - 1)
d = d \ (b * 2 - 1)
b = b - 1
Do While(b)
d = d * b + f(b) * 10000
f(b) = d Mod (b * 2 - 1)
d = d \ (b * 2 - 1)
b = b - 1
Loop
c = c - 14
i = e + d \ 10000
i = Right("0000" & i,4)
If k < 10 Then
k = k + 1
ShowLine = ShowLine & i
Else
k = 0
WSH.Echo ShowLine
ShowLine = ""
End If
e = d Mod 10000
Loop
WSH.Echo ShowLine
第19楼 slore 发表于 2008-04-30 23:42
铂金会员 发帖 2,478 积分 5,212
数字不要太大哦~1000差不多也就1秒~
加个0就…………

'将那个C的代码用VBS处理了下,速度很快,因为是
'每位用一个数处理的,所以没有位数限制。
'恩,记得用CScript调用……

'这个是连续运算最后输出,比一行一行的输出速度快。

Dim b, c, d, e,n, f()
n = 1000 '在这里定义位数
c = n / 4 * 14
ReDim f(c)
For b = 0 To c
f(b) = 2000
Next

Do While
(c)
b = c
d = f(b) * 10000
f(b) = d Mod (b * 2 - 1)
d = d \ (b * 2 - 1)
b = b - 1
Do While(b)
d = d * b + f(b) * 10000
f(b) = d Mod (b * 2 - 1)
d = d \ (b * 2 - 1)
b = b - 1
Loop
c = c - 14
i = e + d \ 10000
i = Right("0000" & i,4)
If k < 10 Then
k = k + 1
ShowLine = ShowLine & i
Else
k = 0
'WSH.Echo ShowLine
ShowLine = ShowLine & vbCrLf
End If
e = d Mod 10000
Loop
WSH.Echo ShowLine
第20楼 slore 发表于 2008-04-30 23:50
铂金会员 发帖 2,478 积分 5,212
恩,这个算法没有浮点运算哦~

+-*/取余运算。
有功夫的试这改成BAT吧。

没有看最大的数是多少,希望BAT可以支持到。
第21楼 xtanbmy 发表于 2008-05-01 03:51
初级用户 发帖 31 积分 47
好牛X,膜拜了!
第22楼 xtanbmy 发表于 2008-05-01 03:52
初级用户 发帖 31 积分 47
大虾们,能不能把结果输出到一个文本文件中呀?
第23楼 slore 发表于 2008-05-01 08:39
铂金会员 发帖 2,478 积分 5,212
Originally posted by xtanbmy at 2008-5-1 03:52:
大虾们,能不能把结果输出到一个文本文件中呀?


把SHOWLINE前的echo换成FSO对象,文本读写操作的对象,然后write下……

在CSCRIPT下可以复制结果嘛。。。
第24楼 PPdos 发表于 2008-05-01 08:54
高级用户 发帖 268 积分 783
古算术法

355/113=3.1415926535897...
第25楼 slore 发表于 2008-05-01 09:03
铂金会员 发帖 2,478 积分 5,212
Originally posted by PPdos at 2008-5-1 08:54:
古算术法



=。=
你自己打的吧?还是我的CALC有问题呢?
第26楼 zh159 发表于 2008-05-01 10:13
金牌会员 发帖 1,467 积分 3,687
Originally posted by PPdos at 2008-5-1 08:54:
古算术法


这个只能精确到6位
第27楼 26933062 发表于 2008-05-02 12:02
银牌会员 发帖 879 积分 2,268
弱弱的问一句,圆周率 可以理解为 a 除以 b 吗?是两个正整数吗?
貌似那个 1 除以 2003 的代码可以更简单,精确到 任意位小数。(cmd 范围内)
第28楼 slore 发表于 2008-05-02 12:15
铂金会员 发帖 2,478 积分 5,212
不存在a/b=Pi的a和b的值……
第29楼 26933062 发表于 2008-05-02 12:19
银牌会员 发帖 879 积分 2,268
难怪我看到网上说用 22除以7 ,我用计算器算结果却不对。。
第30楼 terse 发表于 2008-05-02 12:45
银牌会员 发帖 946 积分 2,404
if "π"=="无理的数" echo π 不可以用分数来表示
上一页  1 2 3  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023