【问题标题】:Decimal Point ignored in Convert.ToDouble [closed]Convert.ToDouble 中忽略的小数点 [关闭]
【发布时间】:2016-05-26 22:17:15
【问题描述】:

在 C# Visual Studio 中,读取后不采用双精度小数点并使用

转换为双精度
Convert.ToDouble(Console.ReadLine()); 

command... 例如,如果输入12.25,它会将值保存为1225。我能得到任何帮助吗? 这是我正在使用的代码。

double number;
Console.WriteLine("Enter a number with a two decimal places!");
number = Convert.ToDouble(Console.ReadLine());
Console.WriteLine(number):
Console.ReadLine();

【问题讨论】:

  • 您能否显示代码,因为您描述的内容应该可以正常工作。
  • 您可能有错误的文化,它可能正在寻找 , 而不是 . 作为分隔符。 (另外请将您的标题更改为更具描述性的标题)
  • 我现在已经展示了代码..!
  • 抱歉,因为我是新手,所以对于措辞弱的问题感到抱歉..!

标签: c# visual-studio double


【解决方案1】:

您当前的代码应该按预期工作,如果不是,则可能是文化问题导致您的双字符串采用不同格式(即12,25 而不是12.25)。

解析时应用当前文化

通过System.Globalization 命名空间解析Convert.ToDouble() 方法中的值时,您可以通过应用当前文化来处理此问题:

// This would use the current culture to handle reading your value
double input = Convert.ToDouble(Console.ReadLine(),CultureInfo.InvariantCulture);

处理各种文化(即句号或逗号)

如果您希望处理句点或逗号,您可能会以相同的方式执行替换:

// Get the number separator for this culture and replace any others with it
var separator = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
// Replace any periods or commas with the current culture separator and parse
var input = Double.Parse(Regex.Replace(Console.ReadLine(),"[.,]",separator));

你可以see a working example of this here

【讨论】:

  • 感谢您的回答,这很有帮助..!
【解决方案2】:

当您的本地文化不使用 . 作为小数分隔符时,它将不起作用。 如果您想输入带有 . 小数分隔符的双精度,则需要指定使用它的文化。

Convert.ToDouble(yourString, System.Globalization.CultureInfo.InvariantCulture)

如果您想以相同的格式输出它,请再次使用相同的CultureInfo

CultureInfo culture = CultureInfo.InvariantCulture;
double input = Convert.ToDouble(Console.ReadLine(), culture);
Console.WriteLine(String.Format(culture, "{0}", input));

【讨论】:

    【解决方案3】:

    这可能是一些文化使用的全球化问题,而不是 .分隔小数位。希望它能解决您的问题。

    string userInput = Console.ReadLine();
    double inputInDouble = Convert.ToDouble(userInput,System.Globalization.CultureInfo.InvariantCulture);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 2021-09-02
      • 1970-01-01
      相关资源
      最近更新 更多