求教,关于 double 数据类型相乘得出无限小数的问题

xchjian012 2012-03-28 09:41:05
求教各位大侠,代码如下,两个double数据类型的数据相乘得出无限小数....这个问题应该怎么解决呢...
double value1 = Convert.ToDouble(dataGridView1.Rows[e.RowIndex].Cells[2].Value);
double value2 = Convert.ToDouble(dataGridView1.Rows[e.RowIndex].Cells[4].Value);
double value3 = Convert.ToDouble(dataGridView1.Rows[e.RowIndex].Cells[6].Value);

dataGridView1.Rows[e.RowIndex].Cells[5].Value = value1 * value2;

dataGridView1.Rows[e.RowIndex].Cells[8].Value =value1 * value2 - value1 * value3;

其中,当dataGridView1.Rows[e.RowIndex].Cells[2].Value 为 7
当dataGridView1.Rows[e.RowIndex].Cells[2].Value 为 2.8 时

则得出 dataGridView1.Rows[e.RowIndex].Cells[5].Value 为19.59999999999.........
得出dataGridView1.Rows[e.RowIndex].Cells[8].Value 为2.09999999............

而当dataGridView1.Rows[e.RowIndex].Cells[2].Value 为 2.9 时

却是:

得出 dataGridView1.Rows[e.RowIndex].Cells[5].Value 为20.3
得出dataGridView1.Rows[e.RowIndex].Cells[8].Value 为2.8000000000............



...全文
469 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
明白了,谢谢各位~~
[/Quote]
楼主你好,datagridview 不会出现你的情况,除非你对它做了什么事
xchjian012 2012-03-28
  • 打赏
  • 举报
回复
明白了,谢谢各位~~
cheng2005 2012-03-28
  • 打赏
  • 举报
回复
其实不需要处理,只要在界面显示的地方格式化一下就好了,请慎用Math.Round,因为你计算出来的值可能还要继续参加下一步计算,这样会造成尾数丢失.导致数字计算的次数越多,误差越大.
dalmeeme 2012-03-28
  • 打赏
  • 举报
回复
比如:Math.Round(3.000000009,2)
保留2位小数,得到3.00
tangxu12 2012-03-28
  • 打赏
  • 举报
回复
Math.Round()
dalmeeme 2012-03-28
  • 打赏
  • 举报
回复
用Math.Round()方法,保留小数位数。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧