我写了一些与问题相关的代码,但我无法让它发挥作用。输入两个数字后,程序陷入无限循环。这种方法有什么办法可行,还是完全错了?
import java.util.Scanner;
public class Arithmetic {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("Enter the numerator and denominator respectively : ");
double a = input.nextDouble();
double b = input.nextDouble();
double c;
for(c=0;;c+=0.000000000001){
if(b*c==a){
break;
}
}
System.out.print(c);
}
}
答案 0 :(得分:9)
我可以想到没有斜线的一种方式:
double c = a * Math.pow(b, -1);
您还可以将Unicode转义替换为/
字符。
double c2 = a \u002f b;
您还可以转换为BigDecimal
s,使用divide
方法,然后将商品转换回double
。
double c3 = new BigDecimal(a).divide(new BigDecimal(b)).doubleValue();
答案 1 :(得分:3)
你可以使用exponent和logarithm,因为exp(log(a)-log(b))= a / b
公共类HelloWorld {
public static void main(String []args){
System.out.println(Math.pow(10,Math.log10(a)-Math.log10(b)));
}
}
您需要添加对> 0和b> 0的检查并制作逻辑,以便它适用于所有a,b但是您可以自己动手。
例如,如果b = 0
抛出错误
如果< 0且b> 0
System.out.println(-Math.pow(10,Math.log10(-a)-Math.log10(b)));
等
答案 2 :(得分:0)
System.out.println("The result is : " + (a * Math.pow(b, -1)));
答案 3 :(得分:0)
public class Num {
public static void main(String[] args) {
double num, den, res;
num = 10;
den = 2;
res = Math.pow(Math.E, (Math.log(num)-Math.log(den)));
System.out.println(res);
}
}