【问题标题】:Getting data from textboxes and multiply从文本框中获取数据并相乘
【发布时间】:2014-04-21 18:45:34
【问题描述】:

我有:

textbox1.text == 1.4087
textbox2.text == 521.54

它不是硬编码的,我是从 JSON 中得到的。无论如何,我想将这两个数字相乘。

我使用这个代码:

double curr = 0.0;
double price = 0.0;
double multiply = 0.0;

double.TryParse(textBox1.Text, out curr);
double.TryParse(textBox2.Text, out price);

multiply = curr * price;

textBox3.Text = multiply.ToString();

我也尝试了Convert.ToDouble 仍然没有运气。 我总是在 textBox3 中得到 0。显然,字符串不被识别为双精度。但他们是。有任何想法吗?谢谢!

编辑:来自 JSON:

{"high": "567.88", "last": "543.95", "timestamp": "1394987785",

我正在使用此代码来获取我需要的内容:

Regex expression = new Regex(@"last"":\s""(?<Identifier>[0-9]+\.[0-9]+)");
      var results = expression.Matches(Cryp);
                foreach (Match match in results)
                {
                    textBox1.Text = match.Groups["Identifier"].Value;
                } 

这里有什么问题吗?

【问题讨论】:

标签: c# json double type-conversion


【解决方案1】:

我会假设其中一个 TryParse 调用失败,导致它的值保持为 0,因此无论工作的是什么,您都会得到 0 的结果。

我刚刚编写了一个带有三个文本框的基本 ASP.NET 应用程序,然后将您的代码粘贴到提交按钮的事件处理程序中,而没有进行任何更改。手动输入您提供的两个数字在 TextBox3 中给出了正确答案 734.693398。您的输入必须关闭。

【讨论】:

    【解决方案2】:

    试试这个:

    double.TryParse(textBox1,NumberStyles.AllowDecimalPoint,
                                     CultureInfo.InvariantCulture, out curr);
    double.TryParse(textBox2.Text,NumberStyles.AllowDecimalPoint,
                                     CultureInfo.InvariantCulture, out price);
    multiply = curr * price;
    

    【讨论】:

    • @user3379278: CultureInfo.CurrentCulture 应该适用于 IMO,您属于哪种文化?
    • @user3379278:你的意思是CultureInfo.InvariantCulture
    • @Sudhaker 你能解释一下有什么问题吗?
    • @user3379278:我怀疑是因为你的文化背景。请记住,浮点数根据不同的文化表现不同,因此您需要将给定的浮点值解析为不变的文化以使其中立
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多