Cint和Cdbl无法使用瑞典语键盘

时间:2017-09-01 07:18:54

标签: vbscript hp-uft

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

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

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

2 个答案:

答案 0 :(得分:2)

在VBA中使用Val,它总是将点视为小数点分隔符。

在VBScript中,我用以下方法来解决这个问题:

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

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

可能的问题:

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

  2. 数字格式化:假设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