Truncated Division和Floored division有什么区别?

时间:2017-05-30 19:25:27

标签: java division

我需要使用数学方法进行理论答案。它们之间是否有任何数学差异,它们如何影响编程语言。

2 个答案:

答案 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 }}; else y是最接近0的整数,q介于0和y之间。

  •   
  • 舍入到最近的q是最接近q的整数(请参阅下面的打破平局规则)。

  •   

如您所见,Java和Wikipedia对此定义表示同意:

  • 截断:舍入为零
  • 发言权:向负/负无穷大方向前进

请注意,Java和维基百科不同意 Round Down 的含义。

答案 1 :(得分:0)

您要对整数进行除法,因此结果将四舍五入为最接近的整数。改为使用浮点变量。

例如,问题的第二部分,1.0 / 2.0 = 0.5。