我想实现或使用一些库来实现智能小数截断。
我的意思是我想得到:从3.456432 - > 3.4,来自0.0000023232432 - > 0.000002和0.000000000001 - > 0.0(或类似的东西)。我需要这个功能来方便用户GUI。
因此我需要减少不等于零的位数。我需要保留1-3个最高有效数字,其他设置为零。
答案 0 :(得分:3)
您是否看过DecimalFormat
API?
DecimalFormat
是一个具体的子类NumberFormat
格式为十进制的 数字。它有各种功能 旨在使解析成为可能 和格式化任何语言环境中的数字, 包括对西方,阿拉伯语的支持, 和印度数字。它也支持 不同种类的数字,包括 整数(123),定点数 (123.4),科学记数法(1.23E4), 百分比(12%)和货币 金额(123美元)。所有这些都可以 本地化。
答案 1 :(得分:2)
如果有任何帮助,您可以使用以下方法将double舍入到指定的有效位数。但是,标准API中没有以合理的方式输出结果的功能:
private static double round(double v, int sigDigits) {
double f = Math.pow(10, Math.ceil(Math.log10(Math.abs(v))) - sigDigits);
return Math.round(v/f)*f;
}
答案 2 :(得分:1)
从Java 5开始,java.util有一个Formatter类,它可以满足你的需要。