解题思路:
float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是,计算往往要求结果精确,这时候BigDecimal就派上大用场啦。
注意事项:
//加法public BigDecimal add(BigDecimal value);
//减法 public BigDecimal subtract(BigDecimal value);
//乘法public BigDecimal multiply(BigDecimal value);
//除法public BigDecimal divide(BigDecimal value);
减乘除其实最终都返回的是一个新的BigDecimal对象,因为BigInteger与BigDecimal都是不可变的(immutable)的
,在进行每一步运算时,都会产生一个新的对象
参考代码:
import java.math.BigDecimal;
import java.util.Scanner;
//(1)商业计算使用BigDecimal。
//
//(2)尽量使用参数类型为String的构造函数。
//
//(3) BigDecimal都是不可变的(immutable)的,在进行每一步运算时,都会产生一个新的对象,所以在做加减乘除运算时千万要保存操作后的值。
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(fun(sc.nextBigDecimal()));
}
private static BigDecimal fun(BigDecimal a) {
BigDecimal b = new BigDecimal(1);
BigDecimal ans = new BigDecimal(1);
while (a.compareTo(b) > 0) {
ans = ans.multiply(a);
a = a.subtract(b);
}
return ans;
}
}
0.0分
0 人评分
简单的a+b (C语言代码)浏览:573 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:703 |
WU-printf基础练习2 (C++代码)浏览:2007 |
【魔板】 (C++代码)(时间超限,希望会的帮我改正一下)浏览:743 |
A+B for Input-Output Practice (III) (C语言代码)浏览:569 |
字符串输入输出函数 (C语言代码)浏览:2495 |
图形输出 (C语言代码)浏览:1387 |
交换Easy (C语言代码)浏览:763 |
计算质因子 (C语言代码)浏览:707 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:440 |