【发布时间】:2015-06-14 00:58:34
【问题描述】:
我在尝试使用Decimal.Parse 转换小数点时遇到问题,小数点精度为 4 或更高。它抛出错误:
输入字符串的格式不正确”当它尝试执行 精度为 0.00006 或更高的函数。
我已尝试使用 InvariantCulture 并排除了此问题,因为我看到有人建议使用此错误。
我也尝试过使用decimal.Parse 无济于事。
正在执行的代码行是:
Decimal decVal = Decimal.Parse(Value.ToString())
其中 value 是字符串“0.00006”。
以前有没有其他人见过这个问题?这是Decimal.Parse 函数固有的问题,还是我正在做的事情?
【问题讨论】:
-
对我有用 - 这可能是文化问题(或者字符串中有不可见的字符)
-
我稍微编辑了您的代码以使用格式,在此过程中,我用变量替换了一行英文描述。我所做的一切是否正确,这段代码是否仍然重现您的问题?我讨厌如此大幅度地更改代码,但它需要被格式化,所以我想仔细检查。
-
对字符串调用 ToString() 的程序员确实会遇到奇怪的问题。它实际上是一个字符串吗?
-
@HansPassant 如果我不得不猜测,我会说它是一个浮点数。
ToString()调用将导致科学记数法在decimal.Parse上失败的精度 -
@DStanley 我怎么知道字符串中是否有不可见的字符?在调试器中,它看起来只是那个字符串,但是否仍有可能在其中以某种方式存在我没有看到的额外字符? petelids 和 Hans Passant 我不认为它是一个浮点数,我尝试转换为一个 Decimal 并且没有工作,如果它是一个浮点数会起作用。它是一个字符串对象。奇怪的是它可以在任何低于 4 的小数精度下工作,因此导致它出错的精度是多少。
标签: c# type-conversion decimal