我正在尝试将以下字符串解析为十进制
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;
}
}
答案 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
后,数字会被正确解析。