Java将N的精确值从n提升到n
发布时间:2020-12-15 05:09:41 所属栏目:Java 来源:网络整理
导读:我有这个简单的问题. 样本输入: 输入一个 95.123 输入两个12 将第一个输入提升到第二个输入必须给出精确的功率值. 像这样:548815620517731830194541.8990253434157159735359672218698 我做不到. 这是我到目前为止所做的.我想我错过了一些东西 System.out.p
我有这个简单的问题.
样本输入: 输入一个 输入两个12 将第一个输入提升到第二个输入必须给出精确的功率值. 我做不到. 这是我到目前为止所做的.我想我错过了一些东西 System.out.println("Input One"); Scanner scanner = new Scanner(System.in); Double inputOne = scanner.nextDouble(); System.out.println("Input Two"); Double inputTwo = scanner.nextDouble(); Double result = Math.pow(inputOne,inputTwo); BigDecimal big = new BigDecimal(result); System.out.println(big); 我错过了什么? 解决方法
你使用double来开始,而double不能完全代表95.123.然后,您将使用具有double值的Math.pow,这将进一步降低精度.将已经有损的值转换为高精度值是没有意义的……它无法神奇地恢复数据. 只需将字符串传递给第一个参数的BigDecimal构造函数,然后将 示例代码: import java.math.BigDecimal; public class Test { public static void main(String[] args) { BigDecimal inputOne = new BigDecimal("95.123"); int power = 12; BigDecimal result = inputOne.pow(power); System.out.println(result); } } 输出: 548815620517731830194541.899025343415715973535967221869852721 (看起来您的预期值实际上是截断的……确切的值应该以1结尾,因为312以1结尾.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |