如何处理java的Math.pow()计算的误差

问题描述

Java中12*Math.pow(10, -1)的计算结果是1.2000000000000002,怎样让幂计算得出正确的结果,项目中有大量类似的幂计算。

解决方案

精确运算需要使用BigDecimal
解决方案二:
再精确的计算都需要一个精度的表示范围。如果对精度要求较高,表示范围较大, 用BigDecimal。
解决方案三:
用BigDecimal进行运算.
解决方案四:
我建议控制精度,即定义各子系统支持的最大精度,在运算时,只保留到精度即可。当然,如果你的精度要求很高,请转换成整数计算,通过单位换算来标记数值真正的含义。

时间: 2024-09-17 04:33:46

如何处理java的Math.pow()计算的误差的相关文章

创建Java ME Math.pow()方法

使用 Java 开发移动设备应用程序时,可能需要用到特定 Java VM 所没有的数学方法.本文将专门解决 Java ME 没有"幂"方法 Math.pow() 的问题.我们将演示使用三种不同的方法开发同一个 ME 应用程序,并从中选出最佳的编程解决方案. 要讨论此问题,我们先考察整数和分数幂参数,将我们的分析限于正实数.我们将演示求整数问题和小数问题的解集相对而言比较容易(而 不考虑指数的符号).在大多数情况下,我们将使用示例问题 n = 82/3,其中我们会求出 n 的良好估计或实

javascript解决Math.pow()的误差

问题描述 发现javascript的Math.pow()的计算结果存在误差,比如12*Math.pow(10, -1)的输出结果是1.2000000000000002,怎样才能让Math.pow()输出精确的结果,需要用Math.pow()进行大量计算,求帮忙! 解决方案 LZ是要多精确保留到几们小数呢?可以用toFixed()来保留有效数字.

java中jieguo=Math.pow(2.5);的问题

问题描述 java中jieguo=Math.pow(2.5);的问题 结果是32,那省略Math可以吗,写成math可以吗,Math是一个类吧,math是Math类的一个对象吧,为什么pow方法只有参数,没有方法体,要导入相应的库和包么 解决方案 谔谔..你是初学java 吧. Math代表的是个类.Java定义规范 类名必须大写,java对大小写进行区分的,所以 你写成 math 是不对的. math 是Math类的一个对象不对,首先,Math类只是个工具类,java定义不可修改,并且不允许实

javascript Math.pow 函数 详解 【附】年均增长率计算

语法 Math.pow(x,y) 定义和用法 pow() 方法可返回 x 的 y 次幂的值. 处理简单数学问题 6的4次方等于1296,记作:64=1296; 求值:Math.pow(6,4)=1296 底数 底数(英语:radix 或 base,通常简称为底),又称基数:指的是指数 bn 中的 b,或是对数 logb 中的 b.这里的 n 称为幂,bn 代表"以 b 为底数的 n 次幂":而 logb 称为"以 b 为底数的对数".通常 b 与 n 是非零的实数或

javascript避免数字计算精度误差的方法详解

本篇文章主要是对javascript避免数字计算精度误差的方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 如果我问你 0.1 + 0.2 等于几?你可能会送我一个白眼,0.1 + 0.2 = 0.3 啊,那还用问吗?连幼儿园的小朋友都会回答这么小儿科的问题了.但是你知道吗,同样的问题放在编程语言中,或许就不是想象中那么简单的事儿了. 不信?我们先来看一段 JS. var numA = 0.1; var numB = 0.2; alert( (numA + numB) === 0.3

javascript避免数字计算精度误差的方法详解_javascript技巧

如果我问你 0.1 + 0.2 等于几?你可能会送我一个白眼,0.1 + 0.2 = 0.3 啊,那还用问吗?连幼儿园的小朋友都会回答这么小儿科的问题了.但是你知道吗,同样的问题放在编程语言中,或许就不是想象中那么简单的事儿了.不信?我们先来看一段 JS. var numA = 0.1; var numB = 0.2; alert( (numA + numB) === 0.3 ); 执行结果是 false.没错,当我第一次看到这段代码时,我也理所当然地以为它是 true,但是执行结果让我大跌眼镜

基于Java中Math类的常用函数总结_java

Java中比较常用的几个数学公式的总结: //取整,返回小于目标函数的最大整数,如下将会返回-2 Math.floor(-1.8): //取整,返回发育目标数的最小整数 Math.ceil() //四舍五入取整 Math.round() //计算平方根 Math.sqrt() //计算立方根 Math.cbrt() //返回欧拉数e的n次幂 Math.exp(3); //计算乘方,下面是计算3的2次方 Math.pow(3,2); //计算自然对数 Math.log(); //计算绝对值 Mat

Java中的惰性计算简介

惰性计算(尽可能延迟表达式求值)是许多函数式编程语言的特性.惰性集合在需要时提供其元素,无需预先计算它们 ,这带来了一些好处.首先,您可以将耗时的计算推迟到绝对需要的时候.其次,您可以创造无限个集合,只要它们继续收 到请求,就会继续提供元素.第三,map 和 filter 等函数的惰性使用让您能够得到更高效的代码.Java 并没有为惰性提 供原生支持,但一些框架和后继语言支持这种惰性,我会在本期和下期文章中探讨它们. 假定使用此伪代码片段来 打印列表的长度: print length([2+1,

与Math.pow 相反的函数使用介绍_基础知识

var a = [1,2,4,32,128]; var b = []; for(var i=0;i<a.length;i++){ var index = Math.log(a[i])/Math.log(2); b.push(index); } //b = [0,1,2,5,7]; 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索math pow math.pow.java math.pow.js math.pow.math