操作数数据类型 varchar 对于 multiply 运算符无效。 |
您所在的位置:网站首页 › 对于avg运算符有效的数据类型 › 操作数数据类型 varchar 对于 multiply 运算符无效。 |
![]() ps: 运算符重载它不香吗 写在前面对于复利公式,在python中只需要 interest = principal * ((1 + rate) ** periods - 1)其中periods是整数, rate、interest和principal是精确的数字(Python 中decimal.Decimal类的实例) 但是在Java中,如果把float换成精度不定的BigDecimal,就无法再使用中缀运算符,因为中缀运算符只支持基本类型。用过java大数类的都知道会写吐的: BigDecimal interest = principal.multiply(BigDecimal.ONE.add(rate).pow(periods).subtract(BigDecimal.ONE)); Python禁止重载内置类型的运算符 python支持的运算符![]() 一元运算符要遵守运算符的一个基本规则:始终返回一个新对象 x和+x何时不等当x是decimal.Decimal实例子时,由于+运算返回新的实例,由于计算机存储浮点数的原因可能会导致偏差, 所以导致内容不等, 即x != +x ps: 一般比较两个浮点数都要设置一个精度来判别 重载加法运算符+和乘法运算符*为了支持涉及不同类型的运算,Python为中缀运算符特殊方法提供了特殊的分派机制。对 表达式a + b来说,解释器会执行以下几步操作 如果a有__add__方法,而且返回值不是NotImplemented,调用a.__add__(b),然后返回结果。如果a没有__add__方法,或者调用__add__方法返回NotImplemented,检查b有没有__radd__方法,如果有,而且没有返回NotImplemented,调用b.__radd__(a),然后返回结果。 如果b没有__radd__方法,或者调用__radd__方法返回NotImplemented,抛出TypeError,并在错误消息中指明操作数类型不支持。 注意 实现一元运算符和中缀运算符的特殊方法一定不能修改操作数。使用这些运算符的表达式期待结果是新对象 如果由于类型不兼容而导致运算符特殊方法无法返回有效的结果,那么应该返回NotImplemented,而不是抛出 TypeError。返回 NotImplemented 时,另一个操作数所属的类型还有机会执行运算,即Python会尝试调用反向方法。为了遵守鸭子类型精神,我们不能测试other操作数(即右操作数)的类型,我们要捕获异常,然后返回NotImplemented。如果解释器还未反转操作数,那么它将尝试去做。如果反向方法返回NotImplemented,那么 Python会抛出TypeError,并返回一个标准的错误消息,例如“unsupported operand type(s) for +: Vector and str”。python3.5支持中缀运算符@(点积运算) 比较运算符Python解释器对众多比较运算符(==、!=、>、=、 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |