Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 自定义生成2的自然对数_Java_Math_Natural Logarithm - Fatal编程技术网

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;i
n
被定义为
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
(一旦整数除法被纠正)。