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