java BigDecimal,
分享于 点击 49643 次 点评:54
java BigDecimal,
控制精度:
BigDecimal num = sum.divide(d, 0, BigDecimal.ROUND_UP);向上取整,精度为。
BigDecimal s = sum.divide(d,0,BigDecimal.ROUND_DOWN);向下取整,精度为0。
取余:
java.math.BigDecimal.remainder(BigDecimal divisor);
具体实现:
import java.util.*;
import java.io.*;
import java.math.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext())
{
BigDecimal sum = sc.nextBigDecimal();
BigDecimal d = sc.nextBigDecimal();
BigDecimal num = sum.divide(d, 0, BigDecimal.ROUND_UP);
BigDecimal s = sum.divide(d,0,BigDecimal.ROUND_DOWN);
BigDecimal ans = new BigDecimal(0);
for(int i = 1;;i++)
{
s = s.subtract(new BigDecimal(i));
if(s.compareTo(new BigDecimal(0)) <= 0)
{
break;
}
num = num.add(new BigDecimal(1));
}
System.out.println(num);
}
}
}
去掉无效数字:
BigDecimal.stripTrailingZeros().toPlainString()
具体实现:
import java.util.*;
import java.io.*;
import java.math.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext())
{
BigDecimal a = sc.nextBigDecimal();
BigDecimal b = sc.nextBigDecimal();
BigDecimal c = a.add(b);
System.out.println(c.stripTrailingZeros().toPlainString());
}
}
}
System.out.println("四舍五入取整:(2)=" + new BigDecimal("2").setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println("四舍五入取整:(2.1)=" + new BigDecimal("2.1").setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println("四舍五入取整:(2.5)=" + new BigDecimal("2.5").setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println("四舍五入取整:(2.9)=" + new BigDecimal("2.9").setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println("四舍五入取整:(-2)=" + new BigDecimal("-2").setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println("四舍五入取整:(-2.1)=" + new BigDecimal("-2.1").setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println("四舍五入取整:(-2.5)=" + new BigDecimal("-2.5").setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println("四舍五入取整:(-2.9)=" + new BigDecimal("-2.9").setScale(0, BigDecimal.ROUND_HALF_UP));
四舍五入取整:(2)=2
四舍五入取整:(2.1)=2
四舍五入取整:(2.5)=3
四舍五入取整:(2.9)=3
四舍五入取整:(-2)=-2
四舍五入取整:(-2.1)=-2
四舍五入取整:(-2.5)=-3
四舍五入取整:(-2.9)=-3
String 构造方法是完全可预知的:写入 new BigDecimal("0.1") 将创建一个 BigDecimal,它正好 等于预期的 0.1。因此,比较而言,通常建议优先使用String 构造方法。当 double 必须用作 BigDecimal 的源时,请注意,此构造方法提供了一个准确转换;它不提供与以下操作相同的结果:先使用 Double.toString(double) 方法,然后使用 BigDecimal(String) 构造方法,将 double 转换为 String。要获取该结果,请使用 static valueOf(double) 方法。
所以构造时尽量用 string。
相关文章
- 暂无相关文章
用户点评