当前位置: 首页 > 面试题库 >

在Java中舍入负数

毕宏盛
2023-03-14
问题内容

根据Wikipedia的说法,在四舍五入一个负数时,您对绝对数进行了四舍五入。因此,根据这种推理,-3.5将四舍五入为-4。但是当我使用java.lang.Math.round(-3.5)时返回-3。有人可以解释一下吗?


问题答案:

根据javadoc

返回最接近参数的long。通过将结果加1/2,将结果取底,并将结果强制转换为long类型,将结果舍入为整数。换句话说,结果等于表达式的值:

(long)Math.floor(a + 0.5d)

从概念上讲,你舍 。换句话说,下一个整数 大于 该值,而-3则大于-3.5,而-4则小于。



 类似资料:
  • 问题内容: 我想将1732的数字四舍五入到十,十万。我尝试了Math的舍入函数,但它仅针对float和double编写。如何针对Integer执行此操作?Java中有任何功能吗? 问题答案: 使用 精度 (Apache Commons Math 3.1.1) 使用 MathUtils (Apache Commons Math)-旧版本 标度 -小数点右边的位数。(+/-) 由于使用了 round(

  • 问题内容: 给定以下代码,我希望它返回“ float = 32000.0001”。但是,它返回“ float = 32000.0”。 我可以采取一些措施来防止/控制舍入吗?我要返回没有四舍五入的完整值。 问题答案: 浮点数只有24位精度,不足以容纳您的值中的位数。四舍五入不是由于解析,而是由于数字的大小。如果需要浮点数,则必须使用double;如果需要任意精度,则必须使用BigDecimal。

  • 问题内容: 我想将整数四舍五入到Java中最接近的1000。 因此,例如: 13,623发至13,000 18,999轮到18,000 等等 问题答案: 只需除以1000,就可以丢掉您不感兴趣的数字,然后乘以1000: 或者,您也可以尝试:

  • 问题内容: 让我们看一下下面的Java语句。 在上述陈述中,除以下情况外,所有其他情况都是显而易见的。 它应该返回但它返回。怎么样? 问题答案: 这是故意行为。从文档中: 四舍五入 DecimalFormat使用半个二进位舍入(请参阅ROUND_HALF_EVEN)进行格式化。 关于ROUND_HALF_EVEN: 舍入模式向“最近的邻居”舍入,除非两个邻居都等距,在这种情况下,向偶数邻居舍入。如

  • 我试图在Java中完善BigInteger,以下是我执行的代码 因此,输出prec1 = 49.32和prec2 = 49.33,对于我的使用情况,我需要始终舍入到49.33,那么除了设置两次比例之外,还有其他方法舍入到49.33吗?

  • 问题内容: 我想以一种优雅的方式将java日期向上或向下舍入到最近的分钟(或秒,小时,天)。 例如,日期“ 2012年1月25日星期三10:36:34 GMT”四舍五入到最接近的分钟将是“ 2012年1月25日星期三10:37:00 GMT”。 问题答案: 如果使用Apache commons- lang ,则可以使用DateUtils舍入日期: