如何添加带货币符号的两个浮点数?

时间:2015-10-24 21:23:06

标签: c# datagridview add

任何人都知道如何使用货币符号添加两个浮点数并将总和放入dataGridview单元格中?

这是我的代码:

private void button8_Click(object sender, EventArgs e)
{
    double a =0.70;
    double b = 0.50;
    dataGridView2.Rows[0].Cells[1].Value = "£" + (a+b);
}

如果我将a和b声明为float,则会出错。 如果我将a和b声明为Double,结果是1.2英镑,如照片所示,但不是£1.20。 我将第1列属性设为包含货币值(结果=£1.2) 我将第1列属性设置为包含数值,结果相同。

我怎样才能赚到1.20英镑? 有没有办法做到这一点?

谢谢

dataGridView

6 个答案:

答案 0 :(得分:3)

double类型不会跟踪计算结果时的小数位数。就其而言,1.21.20以及1.200都是相同的值。

您需要该数字的特定字符串表示,正好有两位小数。获得所需字符串表示的最简单方法是using a format string。例如,您可以这样做:

(a + b).ToString("0:00");

如果您想要格式化多个表达式,您可能会发现此替代方案更方便:

string.Format("{0:0.00} {1:0.00} {2:0.0}", a, b, a + b)

请记住float and double are tricky。您可能希望改为handle money using the decimal type

答案 1 :(得分:1)

您可以使用:

dataGridView2.Rows[0].Cells[1].Value = (a + b).ToString("'£'0.00"));

答案 2 :(得分:1)

为此,您需要设置字符串的格式。试试这个:

dataGridView2.Rows[0].Cells[1].Value = string.Format("£{0:0.00}", a + b)

答案 3 :(得分:0)

你可以试试这个:

dataGridView2.Rows[0].Cells[1].Value = "£" + (a+b).ToString("0.00");

答案 4 :(得分:0)

谢谢大家的帮助。现在它解决了。我玩了格式格式,突然变成了1.20英镑。

答案 5 :(得分:0)

请务必记住Theodoros提供的解释,尤其是使用decimal类型的建议。

尽管如此,另一种方法是使用System.Globalization.CultureInfo。这具有正确处理符号,十进制数字,小数分隔符,组分隔符和组大小的优点。这样您就可以看到£1,234,567.89而不是£1234567.89等结果。

CultureInfo gb = new CultureInfo("en-GB");
string result = (a + b).ToString("c", gb.NumberFormat);

另一个优点是解析原始值同样简单:

decimal amount = Decimal.Parse(result, NumberStyles.Currency, gb);