首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在将两个小数相除时,在C#中获得错误的输出

在将两个小数相除时,在C#中获得错误的输出
EN

Stack Overflow用户
提问于 2019-11-30 18:09:50
回答 1查看 68关注 0票数 0

我有一个程序,它将一个变量与另一个变量相除。但是我得到的答案是错误的!请查看下图:

代码如下:

代码语言:javascript
复制
      iter_defects++;
      df1[iter_defects].blob_id = b.Id;
      decimal convertX = Convert.ToDecimal(txtmmtopixX.Text);
      decimal convertY = Convert.ToDecimal(txtmmtopixY.Text);
      df1[iter_defects].count = iter_defects;

      df1[iter_defects].cog_X = Math.Round( Convert.ToDecimal( b.Centroid.X)) / convertX;
      df1[iter_defects].cog_Y = Math.Round(Convert.ToDecimal(b.Centroid.Y ))/ convertY;
     if (df1[iter_defects].cog_X > 10 && df1[iter_defects].cog_X < 30)
      {

     if (df1[iter_defects].BY > 1 && df1[iter_defects].BY < 74)
      {
       df1[iter_defects].cog_X = df1[iter_defects].cog_X - 20;

       }

      if (df1[iter_defects].BY > 64 && df1[iter_defects].BY < 129)
        {
         df1[iter_defects].cog_X = df1[iter_defects].cog_X - 20;

         }

      if (df1[iter_defects].BY > 118 && df1[iter_defects].BY < 183)
         {
           df1[iter_defects].cog_X = df1[iter_defects].cog_X - 20;

         }

       }

b.centroid.X和b.centroid.Y默认情况下是双精度的,所以我将其转换为十进制。

如果我把147除以9.3,我应该得到大约16,但是我得到了7.9!

之前我使用了双精度而不是小数,但即使是小数也会产生同样的问题。已将变量值固定在右侧的图像上。

会出什么问题呢?

更新:

在我嵌套的if语句中,我根据几个条件进行了更多的算术运算。当我删除这些条件时,计算进行得很好。现在更困惑了。下面的代码可以工作,但如果没有这些条件,我在本节之后的代码将无法工作:

代码语言:javascript
复制
  iter_defects++;
  df1[iter_defects].blob_id = b.Id;
  decimal convertX = Convert.ToDecimal(txtmmtopixX.Text);
  decimal convertY = Convert.ToDecimal(txtmmtopixY.Text);
  df1[iter_defects].count = iter_defects;

  df1[iter_defects].cog_X = Math.Round( Convert.ToDecimal( b.Centroid.X)) / convertX;
  df1[iter_defects].cog_Y = Math.Round(Convert.ToDecimal(b.Centroid.Y ))/ convertY;
 if (df1[iter_defects].cog_X > 10 && df1[iter_defects].cog_X < 30)
  {
  df1[iter_defects].cog_X = df1[iter_defects].cog_X - 20;
  }
EN

回答 1

Stack Overflow用户

发布于 2019-12-02 01:45:18

不完全清楚您的程序是如何工作的,但我认为问题可能是因为您处于某种循环中,当您检查结果时,已经发生了多次迭代,并且基值(例如cog_X)已经更改,因此您的比较数学将不匹配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59115109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档