是否有办法根据数字中的小数位数执行一段代码。例如,如果double只是2.0,我想将它转换为整数,但如果它是2.43426,我想把它留作双。谢谢!
答案 0 :(得分:6)
不确定,但会:
double d = 2.0;
if ((long) d == d) {
// then
}
为你工作?这只能在特定情况下回答你的问题。
答案 1 :(得分:0)
您可以指定精度并按以下方式转换:
double precision = 1e-10;
int rounded = Math.round(x);
if (Math.abs(x-rounded) > precision) System.out.print(x)
else System.out.print(rounded);
答案 2 :(得分:0)
答案 3 :(得分:0)
快速而肮脏的解决方案如下:
double foo = 2.43426;
int count = String.valueOf(foo).split(".")[1].toCharArray().length;
if(count > 1){
// do stuff
}
答案 4 :(得分:0)
如果这是你想要的:
我会将它们转换成字符串并将它们写出来,所以我希望它说3而不是3.0,而不是3而不是3.4324。
然后“正确”的方式是使用DecimalFormat
:
DecimalFormat fmt = new DecimalFormat("0.#");
fmt.setMaximumFractionDigits(Integer.MAX_VALUE);
assert "3".equals(fmt.format(3.0));
assert "3.4324".equals(fmt.format(3.4324));
然而,它确实是小数点分隔符的本地化(我得到一个逗号而不是一个点)。如果这是一个问题,您只需致电fmt.setDecimalFormatSymbols(new DecimalFormatSymbols(Locale.ROOT))
。