Cint 和 Cdbl 无法在瑞典语键盘上工作

Cint and Cdbl not working on Swedish Keyboard

我遇到了一个奇怪的问题,即 Cint 和 Cdbl 没有在瑞典语键盘上返回预期的输出。他们在英文键盘上工作正常。

Cint("6.0")    # Output: 60
Cdbl("70.8")    # Output: 708

出于某种原因,这两个函数都从字符串中删除了小数点。

在 VBA 中使用 Val,它始终假定点作为小数点分隔符。

在 VBScript 中,我使用以下方法解决此问题:

CDbl(Replace(number_in_string, ".", Mid(1.3, 2, 1)))

这样,数字 1.3 将转换为从第二个字符中提取的本地化字符串和小数点分隔符。然后,提供的字符串中的点被提取的小数分隔符替换。

可能的问题:

  1. 千位分隔符!如果您的号码使用与系统小数点分隔符相同的千位分隔符,转换将会损坏!示例:"1,234.56" 将变为 "1,234,56"!解决方法: CDbl(Replace(Replace(number_in_string, ",", ""), ".", Mid(1.3, 2, 1))) 'Remove comma thousand separator

  2. 数字格式:假设1.3将成为一个字符串,其中小数点分隔符在第二个字符是不确定的!