无法解析十进制数(输入字符串格式不正确)

时间:2017-06-13 11:05:40

标签: c#

我正在尝试将以下字符串解析为十进制

var decimalString = "450.000000"

我尝试了以下内容:

var numberFormatInfo = new NumberFormatInfo{ NumberDecimalSeparator = "." };
var dec = decimal.Parse(decimalString, numberFormatInfo);

这不起作用。 我也尝试过:

var dec = decimal.Parse(decimalString, CultureInfo.InvariantCulture)

这也会引发同样的错误

  

输入字符串的格式不正确

编辑: 这是确切的代码:

private NumberFormatInfo _numberFormatInfo = new NumberFormatInfo { NumberDecimalSeparator = "." };
public void SetQuantity(string quantity)
    {
        try
        {
            _quantity = decimal.Parse(quantity, _numberFormatInfo);
        }
        catch (Exception ex)
        {
            _log.WriteEntry($"Holding - SetQuantity Exception: {ex.Message} Value: {quantity}", EventLogEntryType.Error);
            throw ex;
        }
    }

1 个答案:

答案 0 :(得分:1)

我做了一些测试;也许它会给你一个关于在哪里寻找问题的指针...

以下最小工作示例将打印错误消息:

using System;
using System.Globalization;

static class DecimalTest
{
    static void Main(string[] args)
    {
        var dec = 0M;
        var decStr = "450.000000";
        var nfi = new NumberFormatInfo { NumberDecimalSeparator = "." };
        var parsed = decimal.TryParse(decStr, default(NumberStyles),
                                      nfi, out dec);
        if (parsed)
            Console.WriteLine("Decimal value: {0}", dec);
        else
            Console.WriteLine("Sheet happened!");
    }
}

default(NumberStyles)替换为NumberStyles.Any后,数字会被正确解析。