java中的浮点类型能进行运算吗

 我来答
xiangjuan314
推荐于2018-04-30 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2798万
展开全部
可以的
与表示整数的整型不同,浮点型代表的是实数,其实就是包含小数的部分。我们也知道现实世界中是由很多复杂的数据的,所以需要这种表示实数的数据类型的支持。
一、浮点型常量 Java的实常数有两种表示形式:十进制数形式,由数字和小数点组成,且必须有小数点,如0.123, .123, 123. ,123.0 。 2.科学计数法形式。如:123e3或123E3,其中e或E之前必须有数字,且e或E后面的指数必须为整数。 实常数在机器中占64位,具有double型的值。对于float型的值,则要在数字后加f或F,如12.3F,它在机器中占32位,且表示精度较低。
二、浮点型变量 浮点型变量的类型有float和double两种。数据类型所占位数的范围: float 32位 3.4e-038~3.4e+038 ; double 64位 1.7e-308~1.7e+308 ; 双精度类型double比单精度类型float具有更高的精度,和更大的表示范围,常常用于科学计算等高精度场合。
三、浮点型变量定义举例 float f; //指定变量f为float型 double d; //指定变量d为double型 与C、C++不同,Java中没有无符号型整数,而且明确规定了整型和浮点型数据所占的内存字节数,这样就保证了安全性、鲁棒性和平台无关性
匿名用户
2016-03-28
展开全部
double f=0.0005;
double i=3;
double d=f*i;
double f1=0.0005;
double j=3;
double d1=f1*j;
if(d==d1){
System.out.println("aaa");
}这样就相当,java中基本数据类型称为自动变量,自动变量存的是字面值,由于字面值的数据大小可知,生存期可知,出于速度的原因就把它们放在栈中,栈中的数据可以共享.如int a=3 int b=3 编译器先处理int a=3;首先它会在栈中创建一个变量为a的引用,然后在找字面值等于3的地址,没有 就开辟一个存放3这个字面值的地址,接着处理int b=3;在创建完变量为b的应用后,查找有没有3这个字面值的地址,现在有了,则指向3的地址,这时用==(判断地址是否相同时)就会为True
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ericsekkei
2016-03-28 · TA获得超过2625个赞
知道大有可为答主
回答量:1598
采纳率:0%
帮助的人:844万
展开全部
  当我们用不同的电脑计算圆周率时,会发现一台电脑的计算较另一台来讲结果更加精确。或者我们在进行枪战游戏的时候,当一粒子弹击中墙壁时,墙上剥落下一块墙皮,同样的场面在一台电脑上的表现可能会非常的呆板、做作;而在另外一台电脑上就会非常生动形象,甚至与我们在现实中看到的所差无几。这都是浮点运算能力的差异导致的。
  如果是实数的话,就不是这样了,机器有两种办法表示实数,一种是定点,就是小数点位置是固定的,一种是浮点,就是小数点位置不固定,计算方法也比较麻烦,通常会比整数运算代价大很多
  FPU->Floating Point Unit,浮点运算部件
  BCD->Binary Coded Decimal 压缩的二进制数,是用4个位来表示数字0~9,一个byte表示两个十进制数,比如01111001表示79
  科学计数法:a×10的n次幂的形式。将一个数字表示成 (a×10的n次幂的形式),其中1≤|a|<10,n表示整数,这种记数方法叫科学记数法
  java中浮点运算对于很多值浮点数都是采用其能够表示的离目标值最近的数来表示,这有可能会在计算中带来不易觉察的误差。
  如下所例:
  [java] view plain copy
  public class ssss {
  
  public static void main(String[] ages){
  double d1=2.07;
  double d2=1.03;
  System.out.println(d1+d2);
  }
  }

  结果:
  

  
  虽然计算结果离精确值误差很小,但其不是精确的!这在像如金融计算一样计算精确度要求很高的领域是无法接受的,但这是二进制本身的问题,而计算机普遍采用二进制表示,使用基本数据类型无法解决。
  
  
  为了解决基本数据类型浮点数不能进行精确计算的问题,Java中专门提供了java.math.BigDecimal类,其提供浮点数的精确计算功能。与BigInteger类相同,其运算操作均使用方法调用完成
  
  
  demo
  [java] view plain copy
  public class ssss {
  
  public static void main(String[] ages){
  BigDecimal b1=new BigDecimal("2.07");
  BigDecimal b2=new BigDecimal("1.03");
  System.out.println("相加运算:");
  System.out.println("b1:"+b1);
  System.out.println("b2:"+b2);
  System.out.println("相加值:"+b1.add(b2));
  
  }
  }
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式