我正在尝试使用BigDecimal。这似乎很棘手。我遇到了一个问题,我想了解是什么导致了它。
public static String nominator(String nbrPeople)
{
BigDecimal nom = new BigDecimal("365") ;
BigDecimal days = new BigDecimal("365") ;
int limit = Integer.parseInt(nbrPeople);
for (int i = 0 ; i < limit ; i++ )
{
days = days.substract(i) ;
nom = nom.multiply(days) ;
}
return nbrPeople ;
}
这是一个更大的计划的一部分。这是一个应该计算这样的方法:
365 x(365-1)x(365-2)x(365-3)等取决于传入的nbrPeople的值。
我想了解为什么我收到以下错误消息:
无法找到符号
方法substract(int)
没有寻找关于阶乘的讨论,而是关于BigDecimal(或BigInteger)的使用。我正在使用BigDecimal,因为在稍后阶段我需要分割,从而产生浮点。
修改
编辑2
首先编辑删除(代码)以使帖子更具可读性 - 正确的代码已由一位善良的程序员发布在下面
答案 0 :(得分:5)
因为该方法被命名为减法而不是减法。
参数也必须是BigInteger:
http://download.oracle.com/javase/6/docs/api/java/math/BigInteger.html#subtract(java.math.BigInteger)
答案 1 :(得分:2)
您正试图从int
中减去BigDecimal
。由于subtract(int x)
类上没有方法BigDecimal
,因此会出现cannot find symbol
编译器错误。
答案 2 :(得分:1)
错字 - 你拼错了“减去”。
答案 3 :(得分:1)
应该是subtract(单个s)
每当您看到找不到符号消息时,您就会尝试使用不存在的方法或不存在的变量。大部分时间(如本例所示)由于拼写错误或因为您没有导入该类。
答案 4 :(得分:1)
这应该有效:
public static String nominator(String nbrPeople)
{
BigDecimal nom = new BigDecimal("365") ;
BigDecimal days = new BigDecimal("365") ;
int limit = Integer.parseInt(nbrPeople);
for (int i = 0 ; i < limit ; i++ )
{
days = days.subtract(new BigDecimal(i)) ;
nom = nom.multiply(days) ;
}
return nbrPeople ;
}
因为没有BigDecimal.subtract(int)
方法,只有BigDecimal.subtract(BigDecimal)
方法。
答案 5 :(得分:0)
BigDecimal只能减去另一个BigDecimal。你正在减去一个int。见
http://download.oracle.com/javase/6/docs/api/java/math/BigDecimal.html#subtract(java.math.BigDecimal)
答案 6 :(得分:0)
http://download.oracle.com/javase/6/docs/api/java/math/BigDecimal.html#subtract(java.math.BigDecimal
import java.math.BigDecimal;
import java.util.Scanner;
public class BigDecimal_SumExample {
public static void main(String args[]) {
BigDecimal number1;
BigDecimal number2;
BigDecimal sum;
Scanner sc = new Scanner(System.in);
System.out.println("Enter the value of number 1");
number1 = sc.nextBigDecimal();
System.out.println("Enter the value of number 2");
number2 = sc.nextBigDecimal();
BigDecimal a = new BigDecimal(""+number1);
BigDecimal b = new BigDecimal(""+number2);
BigDecimal result = a.add(b);
System.out.println("Sum is Two numbers : -> ");
System.out.println(result);
}
}
**Output is**
Enter the value of number 1
68237161328632187132612387312687321678312612387.31276781237812
Enter the value of number 2
31232178631276123786321712369812369823162319862.32789129819299
Sum is Two Big Decimal numbers : ->
99469339959908310918934099682499691501474932249.64065911057111