任何人都知道如何使用货币符号添加两个浮点数并将总和放入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英镑? 有没有办法做到这一点?
谢谢
答案 0 :(得分:3)
double
类型不会跟踪计算结果时的小数位数。就其而言,1.2
和1.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);