我有两个Integer
值,我需要通过以下方式组合这两个值来创建Double
值:
A.CB
哪里:
A
- 第一个整数值B
- 第二个整数值C
- 零以匹配总长度
基本上,CB
总是必须是9位数,这意味着当B = 1
我需要C
将是8
零,如果B=100
我需要C
将6
零。得到这个结果:15.000000001
和17.000000100
在代码中处理这种逻辑的最佳方法是什么?我的意思是我可以编写自定义方法来创建这个逻辑,但Java是否已经为这种情况使用它而不创建自定义方法?如果不使用字符串格式函数(不将Integer值转换为String),则更好。
像这样的东西?
int A = 123, B = 450;
System.out.println(String.format("%.09f", A + 1e-9 * B));
会打印
123.000000450
附: String.format
是必需的,因为你的尾随零后逗号要求。那些零实际上并不存在,所以你需要一些方法来填充输出,而String.format
是一种方便的方法。如果你只想要一个double
值,你不需要String.format
。
划分b / 1000000000.0
:
int a = 12;
int b = 123;
double x = a + b / 1000000000.0;
System.out.println(x);
将打印:
12.000000123
除非b
的长度超过9位,否则你会得到你想要的。
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会搞砸。