我有两个Integer
值,我需要通过以下两种方式组合这两个值来创建Double
值:
A.CB
其中:
A
-第一个整数值
B
-第二个整数值
C
-零以匹配总长度
基本上,CB
总必须始终为9位数字,这意味着当B = 1
我需要C
将为8
为零时,如果{{1} }我需要B=100
将是C
的零。
要获得此结果:
6
和
15.000000001
在代码中处理此逻辑的最佳方法是什么?我的意思是我可以编写自定义方法来创建此逻辑,但是在这种情况下Java是否已经有一些东西可以使用它而无需创建自定义方法?如果不使用字符串格式函数(不将Integer值转换为String),则可能会更好。
答案 0 :(得分:3)
像这样吗?
int A = 123, B = 450;
System.out.println(String.format("%.09f", A + 1e-9 * B));
将打印
123.000000450
P.S。由于您要在逗号后加上零,因此需要String.format
。这些零实际上并不存在,因此您需要某种方法来 pad 输出,而String.format
是实现此目的的便捷方法。如果只需要一个double
值,则不需要String.format
。
答案 1 :(得分:2)
划分b / 1000000000.0
:
int a = 12;
int b = 123;
double x = a + b / 1000000000.0;
System.out.println(x);
将打印:
12.000000123
除非b
的长度超过9位数字,否则您将获得所需的内容。
答案 2 :(得分:0)
int a = 12;
int b = 123;
// How many digits in b?
int blen = (int)Math.log10(b);
// Make a string of zeros
String padding = "00000000".substring(blen);
System.out.println(a + "." + padding + b);
如果b很大,这将失败,因为blen大于填充,因此子字符串将失败。另外,负数b会使事情搞砸。