点后加自定义数量零的双精度

时间:2019-03-18 20:37:40

标签: java integer double

我有两个Integer值,我需要通过以下两种方式组合这两个值来创建Double值:

A.CB

其中:

A-第一个整数值 B-第二个整数值 C-零以匹配总长度

基本上,CB总必须始终为9位数字,这意味着当B = 1我需要C将为8为零时,如果{{1} }我需要B=100将是C的零。 要获得此结果: 615.000000001

在代码中处理此逻辑的最佳方法是什么?我的意思是我可以编写自定义方法来创建此逻辑,但是在这种情况下Java是否已经有一些东西可以使用它而无需创建自定义方法?如果不使用字符串格式函数(不将Integer值转换为String),则可能会更好。

3 个答案:

答案 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会使事情搞砸。