【问题标题】:Division in C# to get exact value [duplicate]C#中的除法以获得精确值[重复]
【发布时间】:2013-03-02 07:23:33
【问题描述】:

如果我将 150 除以 100,我应该得到 1.5。但是当我像下面那样划分时,我得到了 1.0:

double result = 150 / 100;

谁能告诉我如何获得 1.5?

【问题讨论】:

  • 查找整数除法 - 100 是一个整数 - 改用双精度数

标签: c# floating-point integer-division


【解决方案1】:

试试:

 double result = (double)150/100;

当你像以前一样进行除法时:

double result = 150/100;

除法首先作为一个 Int 完成,然后它被转换为一个双精度因此你得到 1.0,你需要在等式中有一个双精度才能将它除为双精度。

【讨论】:

    【解决方案2】:

    将其中一个整数转换为浮点类型。您应该查看小数和双精度之间的区别并决定您想要哪个,但要使用双精度:

    double result = (double)150 / 100;
    

    【讨论】:

      【解决方案3】:

      拨打号码float

      var result = 150/100f
      

      或者您可以通过添加.0 使任何数字浮动:

      double result=150.0/100
      

      double result=150/100.0
      

      【讨论】:

      • 请注意,从技术上讲,添加 .0 会使它成为不适合 float 的双精度(您的代码显示了这一点,但文本与之相矛盾)。
      【解决方案4】:
      double result = (150.0/100.0)
      

      一个或两个数字应该是=右侧的浮点数/双精度数

      【讨论】:

        【解决方案5】:

        如果您只使用像 150 和 100 这样的文字值,C# 会将它们视为整数,并且整数数学总是“向下舍入”。您可以为浮点数添加一个标志,如“f”或为十进制添加“m”,以不获取整数数学。所以例如result = 150m/100m 会给你一个不同于result = 150/100 的答案。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-02-01
          • 2016-10-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多