如何强制小数点后面带有未知数字的数字?

时间:2016-09-06 20:47:43

标签: java

有没有办法强制将数字放在数字的小数点后面?

说我有一个数字= 2,另一个数字= 23.有没有办法让我强制23成0.23,所以当我添加数字时我最终得到2.23?如果第二个数字中的位数(在本例中为23)未知,有没有办法做到这一点?

编辑: 我意识到这写得很糟糕。我目前正致力于一个从英制单位转换为公制单位的程序。部分代码如下所示:

double feet = nextDouble();
double inches = nextDouble();
double heightInMeters = (feet + (inches/10)) / 3.2808;

此代码的问题在于我预计用户只输入值< 0,9>为了脚。有没有办法强制输入英寸为0.x,其中x =英寸,这样如果数字大于9则无关紧要?

如果不使用toString()和parseInt()就可以。

3 个答案:

答案 0 :(得分:2)

您可以使用以下内容获取整数i中的位数:

1 + Math.floor(Math.log10(i))

not ceil(log10(i)),因为这会计算1的零位数

然后,您需要将i除以10的幂:

i / Math.pow(10, 1 + Math.floor(Math.log10(i)))

e.g。

23 / Math.pow(10, 1 + Math.floor(Math.log10(23))) == 0.23

Ideone demo

或者,如果您认为这些浮点运算logpow过于昂贵,您可以通过循环确定位数:

int d = 1;
while (d < i) d *= 10;

然后

System.out.println(i / (double) d);

(注意你需要将至少一个分子或分母强制转换为浮点类型,否则它将使用整数除法。)

答案 1 :(得分:0)

尝试从字符串中解析为这样加倍:

选项1

try
{
    int n = 2;
    int decimal = 23;
    String full = Integer.toString(n) + '.' + Integer.toString(decimal);
    double val = Double.parseDouble(full);
} catch (Exception e) //Or whatever exception 
{
    //Code
} 

选项2

当然,有更简单的方法,如:

try
{
    int n = 2; 
    int decimal = 23;
    double val = Double.parseDouble(n + "." + decimal);
} catch (Exception e) //Or whatever exception 
{
    //Code
} 

我个人会直接推荐上面的解决方案,因为它是最简单的,并且需要的代码最少。

<小时/> Live Example for Second Option

答案 2 :(得分:0)

使用字符串的简单实现:

public class Mainclass {
    public static void main(String[] args) {
        Integer num = 1546;
        Integer num2 = 2;

        String s = num.toString();
        s = "0." + s;
        Double d = Double.parseDouble(s);
        System.out.println(num2+d ); // 2.1546
    }
}