将 int 转换为双精度时,如何显示小数点和后面的两位

本文关键字:小数点 两位 显示 转换 int 双精度 何显示 | 更新日期: 2023-09-27 18:30:25

给定 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项目。

将 int 转换为双精度时,如何显示小数点和后面的两位

你正在做整数除法,因为originalVal100本身都是整数。尝试:

originalVal/100.0

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

Convert.ToDouble(originalVal)/100

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

double originalVal = Convert.ToDouble(textBox2.Text);
double doublePercented = originalVal/100D;

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

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.");
  }
}

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

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