无需回合

时间:2012-12-07 08:45:16

标签: asp.net

我怎么能搞?

如果我的答案是1.1

然后输出应为1.1(实际)

我的代码: -

decimal totalUnusedAmount = 0;
decimal.TryParse(txtTotalUnusedAmount.Text, out totalUnusedAmount);

lblAmountDue.Text = ((totalUnusedAmount * Convert.ToDecimal(ViewState["FundedAmount"])) / 100).ToString();

但是从上面的代码中获得答案1.10。当我调试代码时,在调试时它给出1.1。

3 个答案:

答案 0 :(得分:0)

您只需指定一种格式即可显示数字:

lblAmountDue.Text = ((totalUnusedAmount * Convert.ToDecimal(ViewState["FundedAmount"])) / 100).ToString("0.0");

文档:http://msdn.microsoft.com/en-us/library/system.string.format.aspx

如果您遇到舍入错误,则需要为100使用小数字。试试这个:

lblAmountDue.Text = ((totalUnusedAmount * Convert.ToDecimal(ViewState["FundedAmount"])) / 100M).ToString("0.0");

数字末尾的M告诉编译器它应该被解释为小数而不是Int32,这是没有小数位的数字的默认文字类型。

文档:http://msdn.microsoft.com/en-us/library/364x0z75(v=vs.110).aspx

要显示您在调试器中看到它的确切答案,您需要“往返”选项:

lblAmountDue.Text = ((totalUnusedAmount * Convert.ToDecimal(ViewState["FundedAmount"])) / 100M).ToString("R");

文档:http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx(位于表格底部)

答案 1 :(得分:0)

试试这个

lblAmountDue.Text = ((totalUnusedAmount * Convert.ToDecimal(ViewState["FundedAmount"])) / 100).ToString("G29");`

请注意,如果数字太长,则以e的幂显示。

修改 适合我

decimal tmp = 1.2000000000000M;
Response.Write(tmp.ToString("G29"));

答案 2 :(得分:0)

我试过了......它的工作

lblAmountDue.Text = ((totalUnusedAmount * Convert.ToDecimal(ViewState["FundedAmount"])) / 100).ToString("0.##");

http://www.csharp-examples.net/string-format-double/