当前位置:首页 » 编程语言 » java精度

java精度

发布时间: 2022-02-02 14:02:32

java计算精度

在java计算中,int/int得到的是一个int,也就是说,3/7得到的结果是一个int(小数部分全部去掉),故而3/7=0。。
后面的自己分析吧。。
如果你想3/7得到一个float或者double,就应该使用3.0/7或者3/7.0或者3.0/7.0
当然,double t=3;t/7也可以。。

❷ java怎么控制数字精度输出

public static void main(String[] args){

//double 型数据的小数点控制输出
double a=1113.141592653;
DecimalFormat formatter1=new DecimalFormat("#.000000");
System.out.println(formatter1.format(a));

//BigDecimal型数据的小数点控制输出
String b="1113.141592653";
//方法1
BigDecimal bd1=new BigDecimal(b);
DecimalFormat formatter2=new DecimalFormat("#.000000");
System.out.println(formatter2.format(bd1.doubleValue()));

//方法2, BigDecimal中的setScale方法的第一个参数就
//是我们要指定的精度位数,这里我设为6位小数,但记住,如果
//舍入后的结果后面几位小数是0,则会被省略,就是说0没被输出,详见后面的测试
BigDecimal bd2=new BigDecimal(b);
System.out.println(bd2.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
//测试
System.out.println();
System.out.println("以下为测试:");
BigDecimal b0=new BigDecimal("1.00000000");
System.out.println(b0.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b1=new BigDecimal("1.00000010");
System.out.println(b1.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b2=new BigDecimal("1.00000020");
System.out.println(b2.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b3=new BigDecimal("1.00000030");
System.out.println(b3.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b4=new BigDecimal("1.00000040");
System.out.println(b4.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b5=new BigDecimal("1.00000050");
System.out.println(b5.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b6=new BigDecimal("1.00000060");
System.out.println(b6.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b7=new BigDecimal("1.00000070");
System.out.println(b7.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b8=new BigDecimal("1.00000080");
System.out.println(b8.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b9=new BigDecimal("1.00000090");
System.out.println(b9.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());

/*输出结果如下:

1113.141593
1113.141593
1113.141593

以下为测试:
1.0
1.0
1.0
1.0
1.0
1.000001
1.000001
1.000001
1.000001
1.000001

*/

}

❸ 怎么控制精度在java

JAVA中如何对double或者float的浮点数进行精度计算,在JAVA中提供了多种参数来实现精度的不同控制方式。具体例子如下:
转自http://stephen830.iteye.com/blog/260776

Java代码
/*
*Createdon2005-6-5
*Authorstephen
*
*CopyRight(C)2005-2008,Allrightsreserved.
*/
packagecom.soft4j.utility;

importjava.math.BigDecimal;

/**
*与小数位精度(四舍五入等)相关的一些常用工具方法.
*
*float/double的精度取值方式分为以下几种:<br>
*java.math.BigDecimal.ROUND_UP<br>
*java.math.BigDecimal.ROUND_DOWN<br>
*java.math.BigDecimal.ROUND_CEILING<br>
*java.math.BigDecimal.ROUND_FLOOR<br>
*java.math.BigDecimal.ROUND_HALF_UP<br>
*java.math.BigDecimal.ROUND_HALF_DOWN<br>
*java.math.BigDecimal.ROUND_HALF_EVEN<br>
*
*@authorstephen
*@version1.0.0
*/
publicfinalclassRoundTool{

/**
*对double数据进行取精度.
*<p>
*Forexample:<br>
*doublevalue=100.345678;<br>
*doubleret=round(value,4,BigDecimal.ROUND_HALF_UP);<br>
*ret为100.3457<br>
*
*@paramvalue
*double数据.
*@paramscale
*精度位数(保留的小数位数).
*@paramroundingMode
*精度取值方式.
*@return精度计算后的数据.
*/
publicstaticdoubleround(doublevalue,intscale,introundingMode){
BigDecimalbd=newBigDecimal(value);
bd=bd.setScale(scale,roundingMode);
doubled=bd.doubleValue();
bd=null;
returnd;
}

/**
*测试用的main方法.
*
*@paramargc
*运行参数.
*/
publicstaticvoidmain(String[]argc){
//下面都以保留2位小数为例

//ROUND_UP
//只要第2位后面存在大于0的小数,则第2位就+1
System.out.println(round(12.3401,2,BigDecimal.ROUND_UP));//12.35
System.out.println(round(-12.3401,2,BigDecimal.ROUND_UP));//-12.35
//ROUND_DOWN
//与ROUND_UP相反
//直接舍弃第2位后面的所有小数
System.out.println(round(12.349,2,BigDecimal.ROUND_DOWN));//12.34
System.out.println(round(-12.349,2,BigDecimal.ROUND_DOWN));//-12.34
//ROUND_CEILING
//如果数字>0则和ROUND_UP作用一样
//如果数字<0则和ROUND_DOWN作用一样
System.out.println(round(12.3401,2,BigDecimal.ROUND_CEILING));//12.35
System.out.println(round(-12.349,2,BigDecimal.ROUND_CEILING));//-12.34
//ROUND_FLOOR
//如果数字>0则和ROUND_DOWN作用一样
//如果数字<0则和ROUND_UP作用一样
System.out.println(round(12.349,2,BigDecimal.ROUND_FLOOR));//12.34
System.out.println(round(-12.3401,2,BigDecimal.ROUND_FLOOR));//-12.35
//ROUND_HALF_UP[这种方法最常用]
//如果第3位数字>=5,则第2位数字+1
//备注:只看第3位数字的值,不会考虑第3位之后的小数的
System.out.println(round(12.345,2,BigDecimal.ROUND_HALF_UP));//12.35
System.out.println(round(12.3449,2,BigDecimal.ROUND_HALF_UP));//12.34
System.out.println(round(-12.345,2,BigDecimal.ROUND_HALF_UP));//-12.35
System.out.println(round(-12.3449,2,BigDecimal.ROUND_HALF_UP));//-12.34
//ROUND_HALF_DOWN
//如果第3位数字>=5,则做ROUND_UP
//如果第3位数字<5,则做ROUND_DOWN
System.out.println(round(12.345,2,BigDecimal.ROUND_HALF_DOWN));//12.35
System.out.println(round(12.3449,2,BigDecimal.ROUND_HALF_DOWN));//12.34
System.out.println(round(-12.345,2,BigDecimal.ROUND_HALF_DOWN));//-12.35
System.out.println(round(-12.3449,2,BigDecimal.ROUND_HALF_DOWN));//-12.34
//ROUND_HALF_EVEN
//如果第3位是偶数,则做ROUND_HALF_DOWN
//如果第3位是奇数,则做ROUND_HALF_UP
System.out.println(round(12.346,2,BigDecimal.ROUND_HALF_EVEN));//12.35
System.out.println(round(12.345,2,BigDecimal.ROUND_HALF_EVEN));//12.35
}
}

如果要求精确控制位数,推荐使用BigDecimal,这是在JDK1.4版本之后推荐的一个处理精度的类。

❹ 在java 中怎么理解高精度和低精度

高精度和低精度 就是针对小数位数 来说的,

高精度 存储和保留的小数位数多,经度就高。
低经度 存储和保留的小数位数相比高精度少 ,经度低。

❺ java中的精度是什么意思

精度是指的各种数据类型的占多少位
byte 8 位
short 16 位
int 32 位
long 64 位
float 32 位
double 64 位
char 16 位
希望能帮到你。

❻ java中的精度问题

你申明是,b为byte,y为byte,在参与计算的过程中先会将其转换为int计算,然后再进行赋值给b,
等号的右边是int型,左边为byte型,大类型赋值给小类型需要强制转换可以写成b = (byte)(b+y);你也可以写成b += y;希望对你有帮助~

❼ Java Math精度处理

可以理解为
tan A=tan(A-π)
我们看1.6-(-1.5415926535897932)=3.1415926535897932 就是π

❽ java中的精度是什么意思啊

不用特别纠结这个东西。
打个比方吧,
你double类型的一个数3.1415926,转成int类型,那么就只会剩下3
而之前后面的那些小数,则会取出掉,这就叫丢失精度

❾ Java精度损失

float 单精度浮点数在机内占4个字节,用32位二进制描述。
double 双精度浮点数在机内占8个字节,用64位二进制描述。

你将一个范围大的值 赋给 范围小的值,自然会有精度损失

❿ java中整数型的精度是几位

都是用二进制存的,整形的就是没有二进制小数,只保留整数位,你兑换成二进制就清楚了;
数据在机器的存储中有两种方式定点型和浮点型,看每个机器的设定 。而且是以二进制形式存储,比如浮点型以阶符,阶码;符号位,小数位;具体可以参考计算机组成原理的前两章。通俗解释就是把二进制转换成小数*2的n次方,n就是阶码,小数就是后边的。

热点内容
长安unit卓越版有哪些配置 发布:2025-01-10 11:25:25 浏览:99
python安装后怎么打开 发布:2025-01-10 11:08:35 浏览:871
phpjava架构 发布:2025-01-10 10:56:06 浏览:383
python二维排序 发布:2025-01-10 10:56:00 浏览:607
南水北调怎么配置 发布:2025-01-10 10:55:27 浏览:121
广数980系统参数密码是多少 发布:2025-01-10 10:55:25 浏览:577
androidhtml字体 发布:2025-01-10 10:55:01 浏览:787
数据库连接工厂模式 发布:2025-01-10 10:51:00 浏览:488
mac文件夹路径设置 发布:2025-01-10 10:48:12 浏览:803
shell脚本自动密码 发布:2025-01-10 10:46:29 浏览:766