为什么13.div(-4)舍入到-4而不是-3? Ruby中是否有任何规则或惯例来舍入负数?如果是这样,为什么下面的代码没有四舍五入?
-3.25.round() #3
解决方法
(-4 * -4) + -3 == 13
并且你得到了一致的关系
(b * (a/b)) + a.modulo(b) == a
Why is 13.div(-4) rounded to -4 and not to -3?
这是一种误解. 13.div(-4)根本不是圆形的.它是整数除法,遵循用于处理整数和模运算的自洽规则. your link中描述的舍入逻辑适合它,然后在一个或两个参数为浮点数时处理相同的divmod操作时应用一致.对于负数或分数的数学运算通常以这种方式从正整数的更简单,更直观的结果扩展.例如.这遵循类似的逻辑,如何从正整数变量创建分数和负幂,或非整数阶乘.
在这种情况下,它只是关于divmod的自我一致性,而不是关于一般的舍入.
Ruby的设计师在处理负数时可以选择,而不是所有语言都会给出相同的结果.但是,一旦确定Ruby将返回与除数匹配的模数结果的符号(而不是将除法作为整体匹配),则设置其余数字的工作方式.
Is there any rule or convention in Ruby to round down negative numbers?
是.舍入浮点数意味着返回数值上最接近的整数.当有两个同样接近的整数时,Ruby会舍入到最远为0的整数.这是完全分开和模运算方法工作的完全独立的设计决策.
If so,why is the following code not rounding down?
-3.25.round() #3
我猜你的意思是读-3的结果.圆形方法不会“向下舍入”.它确实“最接近”. -3是-3.25的最接近整数. Ruby的设计师确实必须做出选择,如何处理-3.5.round()#-4.当舍入该数字时,某些语言将返回-3.
原文地址:https://www.jb51.cc/ruby/267960.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。