双点后点的自定义数量为零

问题描述 投票:1回答:3

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

A.CB

哪里:

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

基本上,CB总是必须是9位数,这意味着当B = 1我需要C将是8零,如果B=100我需要C6零。得到这个结果:15.00000000117.000000100

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

java integer double
3个回答
3
投票

像这样的东西?

    int A = 123, B = 450;
    System.out.println(String.format("%.09f", A + 1e-9 * B));

会打印

123.000000450

附: String.format是必需的,因为你的尾随零后逗号要求。那些零实际上并不存在,所以你需要一些方法来填充输出,而String.format是一种方便的方法。如果你只想要一个double值,你不需要String.format


2
投票

划分b / 1000000000.0

int a = 12;
int b = 123;
double x = a + b / 1000000000.0;
System.out.println(x);

将打印:

12.000000123

除非b的长度超过9位,否则你会得到你想要的。


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会搞砸。

© www.soinside.com 2019 - 2024. All rights reserved.