得到Math.ceil()的精度和类似

时间:2013-09-22 16:01:55

标签: java

我无法在java文档或引用的任何地方看到,它指定了在调用类似Math.ceil()之后得到的double(例如12.875376)的精度。

我试了一下,得到1位小数,但有人知道有关于此的任何明确说明吗?或者至少我应该确信在不同平台等情况下总会如此。

我在测试中遇到了这个问题(Math.ceil(17.5638)的结果是1> 18.0或2> 18.0000)。

干杯。

3 个答案:

答案 0 :(得分:2)

显示的“精度”实际上更多是由于将带有整数值的double转换为String时显示的格式。由于Math.ceil返回一个等于整数的值,IEEE 754双精度数可以表示高达+/- 2 ^ 53的整数,并且具有完美的精度,因此正确答案将是“完美精度”。

整数值双精度如何呈现为字符串完全是一个不同的问题,我怀疑它将非常依赖于语言。

答案 1 :(得分:1)

Math.ceil(x)对于x的所有值都是准确的。如果x太大或太负,那么下一个整数可能无法准确表示,x的幅度非常大,所有可表示的数字(包括x)都是整数,它是它自己的天花板。

鉴于准确性,唯一的问题是输出字符串的转换如何处理整数值的双精度数。如有必要,可以使用DecimalFormat更改。

答案 2 :(得分:0)

作为Math javadocs,ceil返回一个等于数学整数的值。谈论它的精确度是没有意义的。它恰好是18.对于18.0或18.00,它只是它的字符串表示的问题。例如,你可以把它变成18.000。至于测试中的问题,我认为这是不正确的。