有没有办法强制将数字放在数字的小数点后面?
说我有一个数字= 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()就可以。
答案 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
或者,如果您认为这些浮点运算log
和pow
过于昂贵,您可以通过循环确定位数:
int d = 1;
while (d < i) d *= 10;
然后
System.out.println(i / (double) d);
(注意你需要将至少一个分子或分母强制转换为浮点类型,否则它将使用整数除法。)
答案 1 :(得分:0)
尝试从字符串中解析为这样加倍:
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
}
当然,有更简单的方法,如:
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
}
}