【问题标题】:How do I get a decimal value when using the division operator in Python?在 Python 中使用除法运算符时如何获得十进制值?
【发布时间】:2010-09-12 03:33:03
【问题描述】:

例如,标准除法符号“/”舍入为零:

>>> 4 / 100
0

但是,我希望它返回 0.04。我用什么?

【问题讨论】:

    标签: python python-2.7 math syntax operators


    【解决方案1】:

    尝试 4.0/100

    【讨论】:

      【解决方案2】:

      简单的路线 4 / 100.0

      4.0 / 100

      【讨论】:

        【解决方案3】:

        您需要告诉 Python 使用浮点值,而不是整数。您只需在输入中自己使用小数点即可:

        >>> 4/100.0
        0.040000000000000001
        

        【讨论】:

          【解决方案4】:

          共有三个选项:

          >>> 4 / float(100)
          0.04
          >>> 4 / 100.0
          0.04
          

          这与 C、C++、Java 等的行为相同,或者

          >>> from __future__ import division
          >>> 4 / 100
          0.04
          

          您还可以通过将参数 -Qnew 传递给 Python 解释器来激活此行为:

          $ python -Qnew
          >>> 4 / 100
          0.04
          

          第二个选项将是 Python 3.0 中的默认选项。如果要进行旧的整数除法,则必须使用 // 运算符。

          编辑:添加了关于-Qnew 的部分,感谢ΤΖΩΤΖΙΟΥ

          【讨论】:

          • 还请添加python -Q new 命令行选项的可用性,以使您的答案更完整。
          • 这给出了一个浮点值,而不是一个十进制值。请参阅 Glyph 的答案。
          • 你也可以在源码中使用from __future__ import division
          • 然而人们说 python 是一种很棒的数学编程语言...我不知道这里有什么更糟糕的地方,使用特殊的导入可能会改变行为,如果删除,或者在任何地方指定浮点操作.
          【解决方案5】:

          将其中一项或两项设为浮点数,如下所示:

          4.0/100.0
          

          或者,打开 Python 3.0 中默认的功能“真正的除法”,它可以满足您的需求。在模块或脚本的顶部,执行:

          from __future__ import division
          

          【讨论】:

            【解决方案6】:

            你不能通过将一个整数除以另一个整数来得到一个十进制值,你总是会这样得到一个整数(结果被截断为整数)。您至少需要一个值才能成为十进制数。

            【讨论】:

            • 请注意,如果您使用 /,在 Python 3.0 中将不再是这种情况。
            【解决方案7】:

            其他答案建议如何获取浮点值。虽然这将接近您想要的,但它并不准确:

            >>> 0.4/100.
            0.0040000000000000001
            

            如果您确实想要 十进制 值,请执行以下操作:

            >>> import decimal
            >>> decimal.Decimal('4') / decimal.Decimal('100')
            Decimal("0.04")
            

            这将为您提供一个正确知道 base 10 中的 4 / 100 是“0.04”的对象。浮点数实际上是以 2 为底的,即二进制,而不是十进制。

            【讨论】:

              【解决方案8】:

              您可能还想查看 Python 的 decimal 包。这将提供很好的十进制结果。

              >>> decimal.Decimal('4')/100
              Decimal("0.04")
              

              【讨论】:

                【解决方案9】:

                这里我们给出了两种可能的情况

                from __future__ import division
                
                print(4/100)
                print(4//100)
                

                【讨论】:

                • 对于python3,您不需要导入分割行只需使用打印语句对于python2您需要显式添加导入语句
                【解决方案10】:

                像这样从未来的库中导入部门:

                from__future__ import division
                

                【讨论】:

                • 请详细说明为什么这会解决原来的问题,也许这种方法有什么缺点。
                【解决方案11】:

                在代码中添加以下函数及其回调。

                # Starting of the function
                def divide(number_one, number_two, decimal_place = 4):
                    quotient = number_one/number_two
                    remainder = number_one % number_two
                    if remainder != 0:
                        quotient_str = str(quotient)
                        for loop in range(0, decimal_place):
                            if loop == 0:
                                quotient_str += "."
                            surplus_quotient = (remainder * 10) / number_two
                            quotient_str += str(surplus_quotient)
                            remainder = (remainder * 10) % number_two
                            if remainder == 0:
                                break
                        return float(quotient_str)
                    else:
                        return quotient
                #Ending of the function
                
                # Calling back the above function
                # Structure : divide(<divident>, <divisor>, <decimal place(optional)>)
                divide(1, 7, 10) # Output : 0.1428571428
                # OR
                divide(1, 7) # Output : 0.1428
                

                这个功能是在“欧几里得除法算法”的基础上工作的。如果您不想在项目中导入任何外部头文件,此功能非常有用。

                语法:divide([divident], [divisor], [decimal place(optional))

                代码:divide(1, 7, 10)divide(1, 7)

                如有任何疑问,请在下方评论。

                【讨论】:

                  【解决方案12】:

                  您也可以尝试在数字末尾添加“.0”。

                  4.0/100.0

                  【讨论】:

                    【解决方案13】:

                    它只是去掉小数点后的小数部分。 你试过了吗:4.0 / 100

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2012-05-06
                      • 2018-06-21
                      • 2018-12-07
                      • 2018-02-26
                      • 1970-01-01
                      • 2016-07-18
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多