在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
这是一种误解. 13.div(-4)根本不是圆形的.它是整数除法,遵循用于处理整数和模运算的自洽规则. your link中描述的舍入逻辑适合它,然后在一个或两个参数为浮点数时处理相同的divmod操作时应用一致.对于负数或分数的数学运算通常以这种方式从正整数的更简单,更直观的结果扩展.例如.这遵循类似的逻辑,如何从正整数变量创建分数和负幂,或非整数阶乘. 在这种情况下,它只是关于divmod的自我一致性,而不是关于一般的舍入. Ruby的设计师在处理负数时可以选择,而不是所有语言都会给出相同的结果.但是,一旦确定Ruby将返回与除数匹配的模数结果的符号(而不是将除法作为整体匹配),则设置其余数字的工作方式.
是.舍入浮点数意味着返回数值上最接近的整数.当有两个同样接近的整数时,Ruby会舍入到最远为0的整数.这是完全分开和模运算方法工作的完全独立的设计决策.
我猜你的意思是读-3的结果.圆形方法不会“向下舍入”.它确实“最接近”. -3是-3.25的最接近整数. Ruby的设计师确实必须做出选择,如何处理-3.5.round()#-4.当舍入该数字时,某些语言将返回-3. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何为Play 2.0设置PostgreSQL?
- ruby-on-rails-4 – Rails 4 Action Mailer Previews和Fact
- XSD/XML Schema Generator
- C++ typename的使用方式
- _bss_start _armboot_start
- Oracle / PL SQL / SQL null比较where子句
- ios – Swift“Bridging-Header.h”文件不允许我在.swift文
- 细说oracle 11g rac 的ip地址
- 【个人学习笔记8之--关于OVER子句 多属性的比较 PIVOT 聚合
- arrays – Swift 4无法使用类型的参数列表调用’index’