【问题标题】:Why do I use Double.Parse wrong? [duplicate]为什么我使用 Double.Parse 错误? [复制]
【发布时间】:2014-02-20 12:57:51
【问题描述】:

我是这个网站和 C# 的新手,

我有一个关于浮点数和逗号的问题。

dpi.Text = "1188";
winSens.Text = "1";
sens.Text = "1.25";
m_yaw.Text = "0.022";

double sensCM =(360 * 2.54) / ((Double.Parse(dpi.Text) * Double.Parse(winSens.Text) * Double.Parse(sens.Text) * Double.Parse(m_yaw.Text)));

sensCM360.Text = sensCM.ToString();

所以计算就像;

(360 * 2.54) / (1188 * 1 * 1.25 * 0.022)=
=914.4 / 32.67
=27.9889 

但结果不是 27.9889,而是 0,000279889807162534。

如果我将“替换”一一添加到它们,它们就可以像Double.Parse(dpi.Text.Replace(".", ",")) 一样工作。

但我不明白的是为什么它与“,”一起工作,我记得,我们使用“。”在计算中,我在代码中输入了 2.54。那么有人能解释一下吗?

【问题讨论】:

  • 一切都与文化有关stackoverflow.com/questions/5109816/…
  • 你不应该替换它:考虑 1,000,000(100 万)变成 1.000.000
  • 当我运行你的代码时,我得到了正确的答案。 ;S
  • @Brian 因为您的文化将. 作为小数分隔符

标签: c# replace double comma


【解决方案1】:

我也收到0.00027988980716253442。这是因为德国(以及其他国家)的小数点分隔符为,。在美国(和其他国家)它是.

如果你想强制点为decimal separator,你可以使用类似于en-USCultureInfo.InvariantCulture

double sensVal = double.Parse(sens.Text, CultureInfo.InvariantCulture); 
// ...

这导致1.25 而不是125.0

【讨论】:

    【解决方案2】:

    如果您在应用中进行大量解析,请尝试更改线程文化:

    System.Threading.Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
    System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
    
    dpi.Text = "1188";
    winSens.Text = "1";
    sens.Text = "1.25";
    m_yaw.Text = "0.022";
    
    double sensCM =(360 * 2.54) / ((Double.Parse(dpi.Text) * Double.Parse(winSens.Text) * Double.Parse(sens.Text) * Double.Parse(m_yaw.Text)));
    
    sensCM360.Text = sensCM.ToString();
    

    或者只是将文化传递给 double.Parse()

    dpi.Text = "1188";
    winSens.Text = "1";
    sens.Text = "1.25";
    m_yaw.Text = "0.022";    
    double sensCM =(360 * 2.54) / ((Double.Parse(dpi.Text,CultureInfo.InvariantCulture) * Double.Parse(winSens.Text,CultureInfo.InvariantCulture) * Double.Parse(sens.Text,CultureInfo.InvariantCulture) * Double.Parse(m_yaw.Text)));
    
    sensCM360.Text = sensCM.ToString();
    

    【讨论】:

      猜你喜欢
      • 2014-01-27
      • 1970-01-01
      • 2020-07-16
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多