พอดีได้รับโจทย์มาให้แสดงค่าในแต่ละพจน์ออกมา (x^2/2!)+(x^3/3!)+...ไปเรื่อยๆแบบนี้ครับโดยเขากำหนดมาว่าให้หาตั้งแต่ 10,50,100พจน์ตามลำกับโดยที่x=0.5,5,10ตามลำดับครับ เช่น(x^2/2!)=เท่าไร (x^3/3!)=เท่าไร ปริ้นคำตอบออกมาเรื่อยๆตามพจน์ที่เขาให้หา ผมใช้doubleละแน่นอนมันไม่ได้แน่เพราะตัวเลขมันเกินแน่นอน ไปค้นหาในเน็ตมาเห็นว่าต้องใช้BigDecimal ผมลองทำดูแล้วแต่เจอปัญหาครับนี้คือโค๊ดที่ผมทำ
package homework;
import java.util.Scanner;
import java.math.BigInteger;
import java.math.BigDecimal;
import java.math.*;
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
double number=2,powans=2;
BigDecimal e,decimal;
BigDecimal factcount=new BigDecimal("1");
BigDecimal fact=new BigDecimal("1");
Scanner num = new Scanner(System.in);
Scanner terminput = new Scanner(System.in);
double x= num.nextDouble();
int term= terminput.nextInt();
for (int i=2;i<term+1;i++){
for(int j=1;j<=number;j++){
fact=fact.multiply(factcount);
factcount=factcount.add(BigDecimal.valueOf(1));
}
powans=powans*x;
e=(BigDecimal.valueOf(powans));
e=e.divide(fact);
System.out.println(i+"::"+e);
number++;
fact=fact.divide(fact);
}
}
}
xคือตัวเลขที่เขากำหนด ส่วนtermก็คือจำนวนพจน์นะครับซึ้งผมลองทำมาหลายวิธีละจนถึงวิธีนี้มันรันได้นะแต่นี้คือerrorครับมันขึ้นงี้
0.5
10
2::0.5
Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
at java.math.BigDecimal.divide(Unknown Source)
at homework.test.main(test.java:33)
มันรันออกมาได้แค่บรรทัดเดียวละก็errorครับ อยากสอบถามหน่อยว่าต้องแก้ยังไงมันผิดเพราะอะไรวิธีที่ถูกควรต้องทำเช่นไร รบกวนด้วยนะครับ
ขอสอบถามเรื่องBigDecimal ในจาวาหน่อยครับ
package homework;
import java.util.Scanner;
import java.math.BigInteger;
import java.math.BigDecimal;
import java.math.*;
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
double number=2,powans=2;
BigDecimal e,decimal;
BigDecimal factcount=new BigDecimal("1");
BigDecimal fact=new BigDecimal("1");
Scanner num = new Scanner(System.in);
Scanner terminput = new Scanner(System.in);
double x= num.nextDouble();
int term= terminput.nextInt();
for (int i=2;i<term+1;i++){
for(int j=1;j<=number;j++){
fact=fact.multiply(factcount);
factcount=factcount.add(BigDecimal.valueOf(1));
}
powans=powans*x;
e=(BigDecimal.valueOf(powans));
e=e.divide(fact);
System.out.println(i+"::"+e);
number++;
fact=fact.divide(fact);
}
}
}
xคือตัวเลขที่เขากำหนด ส่วนtermก็คือจำนวนพจน์นะครับซึ้งผมลองทำมาหลายวิธีละจนถึงวิธีนี้มันรันได้นะแต่นี้คือerrorครับมันขึ้นงี้
0.5
10
2::0.5
Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
at java.math.BigDecimal.divide(Unknown Source)
at homework.test.main(test.java:33)
มันรันออกมาได้แค่บรรทัดเดียวละก็errorครับ อยากสอบถามหน่อยว่าต้องแก้ยังไงมันผิดเพราะอะไรวิธีที่ถูกควรต้องทำเช่นไร รบกวนด้วยนะครับ