2

给定 123、1234 和 12345 等值,我需要将它们分别转换为 1.23、12.34 和 123.45

这段代码,当我在 textbox2 中输入 123、1234、12345 时:

int originalVal = Convert.ToInt16(textBox2.Text);
double doubled = Convert.ToDouble(originalVal/100);

...给我 1、12 和 123,而不是预期的 1.23、12.34 和 123.45。

我需要做什么才能得到想要的结果?请注意,这是一个使用 VS2003 和 .NET 1.1 的 Windows CE / Compact Framework 项目。

4

3 回答 3

12

您正在进行整数除法,因为两者originalVal100本身都是整数。尝试:

originalVal/100.0

的使用100.0使编译器生成用于浮点除法的代码。或者,这将具有相同的效果:

Convert.ToDouble(originalVal)/100

在进行除法之前,您将originalVal整数转换为双精度数。

于 2013-09-06T21:04:47.313 回答
2
double originalVal = Convert.ToDouble(textBox2.Text);
double doublePercented = originalVal/100D;
于 2013-09-06T21:08:57.673 回答
2

我看你已经有了答案,但是...

private TextBox txtNumerator, txtDenominator, txtResult;

public MyClass() {
  txtNumerator = new TextBox();
  txtNumerator.TextChanged += new TextChangedEvent(TextBox_TextChanged);
  txtDenominator = new TextBox();
  txtResult = new TextBox();
}

private void TextBox_TextChanged(object sender, EventArgs e) {
  double numerator = Convert.ToDouble(txtNumerator.Text.Trim());
  double denominator = Convert.ToDouble(txtDemominator.Text.Trim());
  if (denominator != 0) {
    double result = numerator / denominator;
    // Ref: http://www.csharp-examples.net/string-format-double/
    txtResult.Text = string.Format("{0:0.00}", result);
  } else {
    throw new DivideByZeroException("Denominator can not be zero.");
  }
}

您特别询问如何将双精度位到小数点后两位。String.Format 将为您做到这一点。

此外,使用事件处理程序,您的人员永远不必单击某些计算按钮。

于 2013-09-07T22:22:26.930 回答