Java 自定义生成2的自然对数
我知道我可以使用Java 自定义生成2的自然对数,java,math,natural-logarithm,Java,Math,Natural Logarithm,我知道我可以使用Math.log(2)生成它,但当我尝试编写自己的程序生成一个自然的2的日志时,它会连续打印1。这是我的代码: import java.math.BigDecimal; import java.util.Scanner; public class Ques11 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n =
Math.log(2)
生成它,但当我尝试编写自己的程序生成一个自然的2的日志时,它会连续打印1。这是我的代码:
import java.math.BigDecimal;
import java.util.Scanner;
public class Ques11 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
BigDecimal sum = new BigDecimal(1);
for(int i = 2; i <= n; i++) {
sum.add(new BigDecimal(1/n));
}
System.out.print(sum.setScale(10).toPlainString());
}
}
import java.math.BigDecimal;
导入java.util.Scanner;
公开课问题11{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
int n=scan.nextInt();
BigDecimal总和=新的BigDecimal(1);
对于(int i=2;in
被定义为int
,1
是int
文字。当你除以两个int
时,你使用整数算术,它只会返回分数的整部分-在你的例子中,0
。
要纠正此问题,应使用double
s:
public class Ques11 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double d = scan.nextInt(); // Note we're assigning to a double
BigDecimal sum = new BigDecimal(1);
for(int i = 2; i <= d; i++) {
sum.add(new BigDecimal(1.0/d));
}
System.out.print(sum.setScale(10).toPlainString());
}
}
公共类问题11{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
double d=scan.nextInt();//注意,我们正在分配一个double
BigDecimal总和=新的BigDecimal(1);
对于(int i=2;我将1/n
更改为1.0/n
这里的某个人来回答它?你为什么认为这会计算2的对数?你似乎在计算1+(n-1)*1/n
(一旦整数除法被纠正)。