概述
最近发现项目的代码有一些非常无语的问题,其中一个最恶心的就是这个计算精度的问题,闲话不说,先来看两段代码:
精度问题之js:
function test(){
a = 10 ;
b = 9.03;
c = a - b;
}
这段代码的运行结果是0.9700000000000006,而不是我们想得到的0.97。
精度问题之java:
public void test(){
int i = 10;
double d1 = 9.03d;
double d = i-d1;
System.out.println(d);
}
这段代码的运行结果依然是0.9700000000000006。
具体原因楼主就不做解释了,大家百度。大多数语言都存在这种问题,计算整型没事,计算浮点型就不能由着编程语言的性子来了,咱们就得多做点事情。
之前遇到的这种问题解决思路主要有两个,一个是比较简单的限制精度,另一个是计算的数值同时扩大10的N次方倍(就像上面可以扩大100倍),然后再计算,计算完之后再除以相同的倍数。
还是看一段简单的代码
function test(){
a = 10 ;
b = 9.03;
c = (a*100 - b*100)/100; //同时扩大100倍
c = (a-b).toFixed(2); //限制精度
}
public void test(){
int i = 10;
double d1 = 9.03d;
double d ;
d = Double.parseDouble(new DecimalFormat("0.00").format(d)));//限定精度
d = (i*100-d1*100)/100; //同时扩大100倍
}
最后
以上就是优美大米为你收集整理的数值计算中的精度问题的全部内容,希望文章能够帮你解决数值计算中的精度问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复