我需要使用数学方法进行理论答案。它们之间是否有任何数学差异,它们如何影响编程语言。
答案 0 :(得分:1)
根据Java术语," Truncated Division" vs"地板部门"最好由RoundingMode
的javadoc回答:
DOWN
舍入模式为舍入为零。切勿在丢弃的分数之前递增数字(即截断)。请注意,此舍入模式永远不会增加计算值的大小。FLOOR
舍入模式为向负无穷大舍入。如果结果为正,则表现为RoundingMode.DOWN
;如果是否定的,则表现为RoundingMode.UP
。请注意,此舍入模式永远不会增加计算值。
Java除法运算符由JLS §15.17.2. Division Operator /
:
整数除法向0舍入。
这就是5 / -3
导致-1
。
您还可以查看" Truncate"的定义。 vs" Floor"在Wikipedia:
将数字
y
四舍五入为整数q
有多种方法最常见的方法是:
向下舍入(或 floor ,或 向无穷远方向 ):
q
是不超过y
的最大整数。向上舍入(或采用天花板,或向无限远舍入):
q
是最小的不小于y
的整数。向零舍入(或截断,或远离无穷大):
q
是整数部分y
,没有分数。离开零(或向无穷大的方向):如果
y
是整数,q
是{{1 }}; elsey
是最接近0的整数,q
介于0和y
之间。舍入到最近的:
q
是最接近q
的整数(请参阅下面的打破平局规则)。
如您所见,Java和Wikipedia对此定义表示同意:
请注意,Java和维基百科不同意 Round Down 的含义。
答案 1 :(得分:0)
您要对整数进行除法,因此结果将四舍五入为最接近的整数。改为使用浮点变量。
例如,问题的第二部分,1.0 / 2.0 = 0.5。