十进制解析的行为不符合预期

问题描述 投票:0回答:1

我正在编写一个程序,在代码中的某个位置我需要解析 .txt 文件,具体来说,我需要解析十进制数字。问题在于

Decimal.Parse()
函数由于某种原因忽略了小数点。请参阅调试截图:

有人可以解释为什么

"1.84"
被解析为
184
以及我如何解决这个问题吗?预先感谢!

c# string parsing semantics
1个回答
0
投票

您面临的问题可能与系统的文化或区域设置有关。 Decimal.Parse() 方法使用当前区域性设置来解释十进制数的字符串表示形式。

如果您的文本文件使用的小数点分隔符与系统区域性设置中指定的小数点分隔符不同,您可能会遇到问题。例如,某些文化使用逗号 (,) 作为小数点分隔符而不是点 (.)。

要解决此问题,您可以在解析小数时显式指定区域性。您可以使用 CultureInfo.InvariantCulture 来确保点 (.) 始终被识别为小数点分隔符,无论当前区域性如何:

using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        string numberString = "1.84";                        
        decimal parsedDecimal = decimal.Parse(numberString, CultureInfo.InvariantCulture); // Specify CultureInfo.InvariantCulture to use dot as the decimal separator    
        Console.WriteLine(parsedDecimal);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.