我无法在java文档或引用的任何地方看到,它指定了在调用类似Math.ceil()之后得到的double(例如12.875376)的精度。
我试了一下,得到1位小数,但有人知道有关于此的任何明确说明吗?或者至少我应该确信在不同平台等情况下总会如此。
我在测试中遇到了这个问题(Math.ceil(17.5638)的结果是1> 18.0或2> 18.0000)。
干杯。
答案 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。至于测试中的问题,我认为这是不正确的。