微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Ruby中划分后,为什么负数会向下舍入?

我正在查看 divmod上的文档.显示方法div,divmod,modulo和remainder之间差异的表的一部分显示如下:

为什么13.div(-4)舍入到-4而不是-3? Ruby中是否有任何规则或惯例来舍入负数?如果是这样,为什么下面的代码没有四舍五入?

-3.25.round()  #3

解决方法

13.div(-4)== -4和13.modulo(-4)== -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 举报,一经查实,本站将立刻删除。

相关推荐