Board logo

标题: [问题求助] 【已解决】vbs在中/英文版WIN7操作系统里面对除法计算的结果显示有所不同,何解? [打印本页]

作者: gflrlm    时间: 2014-4-22 11:22     标题: 【已解决】vbs在中/英文版WIN7操作系统里面对除法计算的结果显示有所不同,何解?

本帖最后由 gflrlm 于 2014-4-22 22:58 编辑

VBS 求助:  有如下很简单的除法,用round函数取小数点后2位。

Dim a1,a2,a3                                            
a3=1/2
a3=round(a3,2)  
msgbox(a3)

在中文旗舰版win7 64位系统里面,显示的结果是.5
在英文企业版win7 32位系统里面,显示的结果是0.5

中文旗舰版是我自己安装的ghost版本,英文企业版是公司的正版系统。

各位大牛,有何见解?多谢了
作者: gflrlm    时间: 2014-4-22 12:49

各位版主/坛友们,有碰到过的吗?
作者: PowerShell    时间: 2014-4-22 13:53

你这个是bug,但是今年1月vbs有高危漏洞了,http://www.bathome.net/thread-27943-1-1.html  随后出了补丁,你补了高危漏洞,或许会去掉此bug。
另外,欢迎阅读拙作。
powershell躺着进行数值计算   http://www.bathome.net/thread-26030-1-1.html
用powershell帮丹姐数钱  http://www.bathome.net/thread-28100-1-1.html
作者: apang    时间: 2014-4-22 14:27

FormatNumber(1/2, 2, true)
作者: Demon    时间: 2014-4-22 18:45

我是来围观3楼的
作者: CrLf    时间: 2014-4-22 20:43

这是注册表控制的格式吧,就像日期在中英文系统下显示的格式就有差异
在这里应该可以找到对应项:
  1. HKEY_CURRENT_USER\Control Panel\International
复制代码

作者: gflrlm    时间: 2014-4-22 22:41

回复 3# PowerShell

这个漏洞我已经修复了,不是该bug引起的
作者: gflrlm    时间: 2014-4-22 22:44

回复 4# apang

大牛多谢了, 这个函数formatnumber完全可以,我继续看看round为什么不行
作者: gflrlm    时间: 2014-4-22 22:54

回复 6# CrLf

牛人啊,确实是因为系统设置问题导致的。 区域和语言选项设置里面,如下图最后一行:
作者: PowerShell    时间: 2014-4-23 23:11

本帖最后由 PowerShell 于 2014-4-23 23:14 编辑

1 认为bug,我武断了  

2 原来如此,我的中文64位win8.1企业版也默认也是.7,算出来你那个也是.5---跟是否中文没关。

3 我认为vbs 的 round这个特性不好,powershell的round就没这问题
[system.math]::round(0.5,2)  ---返回0.5----格式那选择的是.7----不信你试试。
作者: gflrlm    时间: 2014-4-25 02:31

回复 10# PowerShell

果然。。。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2