11

嗨,我是 ac# 新手,有人会礼貌地告诉我如何将这段代码的值转换为双精度/四舍五入的十进制数。在此先感谢

DataTable dtValues = new DataTable("GetValues");

strValueNumber = ValueNumber[0].ToString();
dtGetValues = SQLMethods.GetValues(strValueNumber);

total = 0;

for (int i = 0; i < dtValues.Rows.Count; i++)
{
    total1 = total1 + Convert.ToInt32(dtGetValues.Rows[i]["total_1"]);                  
    total2 = total2 + Convert.ToDouble(dtGetValues.Rows[i]["total_2l"]) * .45; 

    tbtotal1.Text = total1.ToString();
    tbtotal2.Text = total2.ToString(); 
}
}               
catch (Exception ex)
{
    MessageBox.Show("Error in returning selected Values. " +
                    "Processed with error:" + ex.Message);
}
}
4

4 回答 4

19

采用Math.Round

Math.Round(mydoublevalue, 2);

在您的代码中

tbtotal2.Text = Math.Round(total2, 2).ToString(); 
于 2012-06-26T17:47:01.777 回答
6

我的回答已经很晚了,但是对于像我这样想要的人来说:

转换为双精度/十进制并且还希望该值始终显示为小数点后 2 位 (.00 ) String

tbtotal2.Text = Math.Round(total2, 2).ToString("#.00"); 

以下表示始终保留两位小数。

"#.00"

如果有值,以下表示两位小数。

"#.##"
于 2015-07-11T10:18:27.953 回答
5

如果您只想将值四舍五入以显示为字符串,您也可以使用String.Format

tbtotal1.Text = String.Format("{0:0.##}", total1);

文本“{0:0.##}”描述了您希望它的格式。# 表示不应包含结束零(例如 1.2 保留字符串“1.2”),如果您改为使用“{0:0.00}”,则无论如何都会包含两位小数,因此双 1.2 将变为“1.20 ”。

于 2012-06-26T17:54:02.143 回答
1

像这样做。

 tbtotal1.Text = Math.Round(double.Parse(total1.ToString()), 2).ToString();
 tbtotal2.Text = Math.Round(double.Parse(total2.ToString()), 2).ToString(); 
于 2012-06-26T17:49:25.877 回答