【发布时间】:2018-01-08 18:59:47
【问题描述】:
我有一个奇怪的问题,即必须将双精度数的精度限制为小数位数,或者根本没有小数位,精度是这样交给我的:0.001、0.1、1、0.00001 等.
例如,我可以得到 1.234247324 和 0.001 的精度指标,因此我需要返回 1.234。如果相反,我得到了 1.0 的精度,那么我将返回 1(没有小数位),依此类推。
我不知道该怎么做。有没有人指点如何解决这个问题?
谢谢!
【问题讨论】:
-
考虑 BigDecimal。还要考虑你遇到的大量类似问题。
-
请注意,大多数此类值,包括您的 1.234 示例,都不能精确地表示为 IEEE 754 浮点值。
-
我真的很喜欢这个问题中接受的答案。 stackoverflow.com/questions/26120311/… 它展示了如何使用 BigDecimal,它显示了 BigDecimal 和 double 之间的区别,和打印出来的版本。明确阅读。
-
@EdyBourne 你必须使用大十进制。 “双”不存储这样的值。 docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html
标签: java math precision arithmetic-expressions rounding