我通过格式化双精度值获得了一个字符串,例如
Dim strFormat = "#,##0.00 weeks"
Dim strDisplayText As String = dblIn.ToString(strFormat) ' dblIn is type Double
然后 strDisplayText 将显示在(wpf.datagrid 的)文本框中,用户可以对其进行编辑。之后,文本应转换回双精度。
Dim dblOut = ???(strDisplayText, strFormat)
' dblOut should be the same as dblIn, if strDisplayText wasnt changed.
if dblOut.ToString(strFormat) <> strDisplayText Then
print("failed conversion.")
end if
Double.Parse(和 TryParse)由于末尾的“周”而失败,并且 Val 无法处理“,”作为组分隔符。
strFormat 是从文件中读取的,因此它可能是任何有效的自定义或标准数字格式(https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings 或 https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings)
您可以使用简单的字符串方法删除末尾的
" weeks"
:
Dim dblValue = strDisplayText.Remove(strDisplayText.Length - " weeks".Length)
Dim dbl As Double = double.Parse(dblValue)