Fzu 2036 Log Calculator(JAVA 浮点数输出精度控制)
来源:互联网 发布:自学机器人编程 编辑:程序博客网 时间:2024/05/22 15:51
Java高精度题:
给定a,b,求s=log2(2a+2b);
解析:
a>ba=log2(x) x=2^a
b=log2(y) y=2^b
log2(x+y) = b+log2(1+2^(a-b));
在a-b > 32时,log2(1+2^(a-b)) 近似等于 log2(2^(a-b))
总结:之前对于Java的高精度不太熟练,通过这题加强了Java高精度的练习,
还有本来这题还是可以做出来的,因为没有听方敏霞同学,话没完成这题,留此句以警示自己。
import java.util.Scanner;import java.math.*;public class Main {public static void main(String[] args) {Scanner cin = new Scanner(System.in);int t , cas = 1;BigDecimal a,b,sum,beta;t = cin.nextInt();while(t-- != 0) {a = cin.nextBigDecimal();b = cin.nextBigDecimal();if(a.compareTo(b) > 0) {BigDecimal tmp = a;a = b;b = tmp;}beta = a.subtract(b);if(beta.compareTo(BigDecimal.valueOf(32)) > 0) {sum = b.add(beta);}else {double x = beta.doubleValue();double cnt = Math.pow(2.0, x) + 1;double s = Math.log(cnt) / Math.log(2.0);sum = b.add(BigDecimal.valueOf(s));}sum = sum.setScale(9, BigDecimal.ROUND_HALF_UP);System.out.println("Case " + (cas++) + ": "+sum);}}}
1 0
- Fzu 2036 Log Calculator(JAVA 浮点数输出精度控制)
- Java浮点数精度控制
- 浮点数精度控制
- C和Java中如何控制浮点数的精度输出
- 浮点数计算精度控制
- 控制浮点数的精度
- 【大数问题】 FZU 2036 Log Calculator
- Java中对浮点数精度的控制
- 浮点数精度控制方式总结(含mysql和java)
- HDOJ 3201(java 格式化控制_浮点数精度保留)
- java 浮点数精度问题
- JAVA浮点数精度问题
- Java浮点数精度问题
- java 浮点数精度损失
- java输出精度控制
- Java控制输出精度
- 7. JPA @Column 控制浮点数精度
- 【Java】解决计算浮点数精度问题(BigDecimal)
- 如何设置进程(线程)在指定的CPU上运行
- mediaStore的使用
- linux网络设备—mdio总线
- jdbc连接数据库使用sid和service_name的区别
- Linux设备驱动子系统第三弹 - Input
- Fzu 2036 Log Calculator(JAVA 浮点数输出精度控制)
- Java - 生成keystore
- Win8.1 取消开机密码
- ORACLE11g 更改RAC归档模式
- 【修了一下午手机!算是了解android系统吧,呵呵!】
- sublime text2 python error message /usr/bin/python: can't find '__main__' module in ''
- linux中各个目录的含义和作用
- bug report的三要素
- sshd_localhost出错:Connection closed by ::1