我面临一个奇怪的问题,即Cint和Cdbl没有在瑞典语键盘上返回预期的输出。它们在英文键盘上工作正常。
Cint("6.0") # Output: 60
Cdbl("70.8") # Output: 708
由于某种原因,这两个函数都从字符串中删除小数。
答案 0 :(得分:2)
在VBA中使用Val
,它总是将点视为小数点分隔符。
在VBScript中,我用以下方法来解决这个问题:
CDbl(Replace(number_in_string, ".", Mid(1.3, 2, 1)))
这样,数字1.3将转换为从第2个字符中提取的本地化字符串和小数点分隔符。然后,提供的字符串中的点被提取的小数分隔符替换。
可能的问题:
千位分隔符!如果您的数字使用与您的系统小数分隔符相同的千位分隔符,则convertion将损坏!示例:"1,234.56"
将成为"1,234,56"
!解决方法:
CDbl(Replace(Replace(number_in_string, ",", ""), ".", Mid(1.3, 2, 1))) 'Remove comma thousand separator
数字格式化:假设1.3
将成为一个字符串,其中小数分隔符不在第二个字符中!
答案 1 :(得分:0)
正如评论中所述,这是因为您的区域设置。这是一种使用VBA查看PC上当前十进制和千位分隔符的方法:
Public Sub TestMe2()
Debug.Print "This is decimal separator:"
Debug.Print Application.DecimalSeparator
Debug.Print "This is thousand separator:"
Debug.Print Application.ThousandsSeparator
End Sub