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

Java 如何强制小数点后面有未知数字的数字?,java,Java,有没有办法强制将数字置于数字的小数点后 假设我有一个数=2,另一个数=23。有没有一种方法可以让我把23变成0.23,这样当我把数字加起来的时候,我就得到了2.23?当第二个数字的位数,在这个例子中是23,未知时,有没有办法做到这一点 编辑: 我意识到这篇文章写得很糟糕。我目前正在开发一个将英制单位转换为公制单位的程序。部分代码如下所示: double feet = nextDouble(); double inches = nextDouble(); double heightInMeters

有没有办法强制将数字置于数字的小数点后

假设我有一个数=2,另一个数=23。有没有一种方法可以让我把23变成0.23,这样当我把数字加起来的时候,我就得到了2.23?当第二个数字的位数,在这个例子中是23,未知时,有没有办法做到这一点

编辑: 我意识到这篇文章写得很糟糕。我目前正在开发一个将英制单位转换为公制单位的程序。部分代码如下所示:

double feet = nextDouble();
double inches = nextDouble();
double heightInMeters = (feet + (inches/10)) / 3.2808;
try
{
    int n = 2; 
    int decimal = 23;
    double val = Double.parseDouble(n + "." + decimal);
} catch (Exception e) //Or whatever exception 
{
    //Code
} 
这段代码的问题是,我预计用户只输入脚的值。有没有办法将英寸的输入强制为0.x,其中x=英寸,这样数字是否大于9就无关紧要了


如果可以不使用toString()和parseInt(),那就太好了。

您可以使用以下方法获得整数中的位数,
i

1 + Math.floor(Math.log10(i))
(不是
ceil(log10(i))
,因为这计算出
1
有零位)

然后需要将
i
除以该数字的幂10:

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


或者,如果您认为那些浮点操作
log
pow
过于昂贵,则可以使用循环确定位数:

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

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

请尝试从字符串中按如下方式解析双精度:

选择1 选择2 当然,还有更简单的方法,如:

double feet = nextDouble();
double inches = nextDouble();
double heightInMeters = (feet + (inches/10)) / 3.2808;
try
{
    int n = 2; 
    int decimal = 23;
    double val = Double.parseDouble(n + "." + decimal);
} catch (Exception e) //Or whatever exception 
{
    //Code
} 
我个人会直接推荐上面的解决方案,因为它是最简单的,并且需要最少的代码。

使用字符串的简单实现:

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
    }
}

转换为字符串<代码>'2'+'.+'23',然后解析为float?
x/Math.pow(10,1+Math.floor(Math.log10(x))==0.x
。不想太迂腐,但一英尺有12英寸,而不是10英寸,所以
(英尺+(英寸/10))/3.2808
给出了错误的答案。我觉得更容易做到这一点的方法可能是:我认为我的答案选项2中的方法更简单。你不能也使用
ceil
而不是
floor
,并且去掉
1+
?(不是ceil(log10(I)),因为它计算出1有零位)。谢谢!第一个选项正是我想要的。请记住,如果您将其存储在
双精度
,则1英寸和10英寸之间不会有任何差异。
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
    }
}