我通过格式化双精度值得到了一个字符串,例如
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"
末尾的:您无法将使用任意格式字符串格式化的文本恢复为双精度值。没有
Double.TryParseExact
(如Date
)。特别是如果您有不同的小数点或组分隔符。我会让用户编辑双精度值,而不是格式化文本。