关于java使用double还是float

眼睛一亮在论坛上发现一枚很有价值的评论赶紧抄下来...

记住java一定要用double,更鼓不变,就算数值不大也要用double。
了解java虚拟机的底层会知道,float放在内存中其实是当作double来处理的,它不会比double更节约内存资源,对应的double虚拟机会直接以double形式来进行处理,快速而且精度高,但是如果用float,不但不会节约内存资源,虚拟机为了校验float的精度,会花费更多的系统资源,例如cpu时钟,程序执行步骤等等。
相对于这点,整数类型,能用int就用int,不要用什么short类型,道理是一样,其实虚拟机中short,char,boolean,byte在内存中都是以int形式来处理的,为了校验精度,虚拟机还会付出格外的开销,这样其实得不偿失,不要自作聪明以为节约了内存,其实错了。当然long类型例外,虽然long类型也会增加资源的开销,但是毕竟能完成int完成不了的功能。
还有,其实这些资源的开销对于整个应用程序和现有硬件资源而言就是九牛一毛,微乎其微,没有必要过于在意。就用习惯的形式即可。不要自作聪明的用特别的数据类型,浮点就double,整形就int,长整型就long,其它的必要性都不大(byte的话,用来做数组还是很方便的,除此不推荐使用)

暑假准备看完JVM,别人的讲解总归要自己来印证,不能因为有道理就信了,噶

时间: 2024-10-19 16:15:57

关于java使用double还是float的相关文章

java用double和float进行小数计算精度不准确

java用double和float进行小数计算精度不准确 大多数情况下,使用double和float计算的结果是准确的,但是在一些精度要求很高的系统中或者已知的小数计算得到的结果会不准确,这种问题是非常严重的. <Effective Java>中提到一个原则,那就是float和double只能用来作科学计算或者是工程计算,但在商业计算中我们要用java.math.BigDecimal,通过使用BigDecimal类可以解决上述问题,java的设计者给编程人员提供了一个很有用的类BigDecim

Java double和 float丢失精度问题

详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt357 由于对float或double 的使用不当,可能会出现精度丢失的问题.问题大概情况可以通过如下代码理解: public class FloatDoubleTest { public static void main(String[] args) { float f = 20014999; double d = f; double d2 = 20014999; Syst

Java中如何解决double和float精度不准的问题

我们知道浮点数是无法在计算机中准确表示的,例如0.1在计算机中只是表示成了一个近似值,因此,对付点数的运算时结果具有不可预知性. 在进行数字运算时,如果有double或float类型的浮点数参与计算,偶尔会出现计算不准确的情况.如以下示例代码: package ex; public class BigDeciTest { public static void main(String[] args){ System.out.println(0.05+0.01); System.out.printl

Java语言中:float、double数据类型在内存中是如何存储的

引用参考 https://www.cnblogs.com/chenmingjun/p/8415464.html#4291528 https://blog.csdn.net/yansmile1/article/details/70145416 java语言中,float类型数字在计算机中用4个字节(32位)来存储.double类型占用8个字节(64位). 从存储结构和算法上来讲,double和float是一样的,不一样的地方仅仅是float是32位的,double是64位的,所以double能存储

Swift入门(九)——String与Int、Double、Float等数字相互转换

三种转换模式 任何语言里面,Int.float.double等数字类型自成一派,但它们和String类型之间的转换总是不太方便,这里总结一下它们相互转换的方法.总结下来一共有三种转换模式,分别举例说明. 一.String转数字 这里以String类型转Int类型为例.String转其他的数字类型(Float.Double等)大同小异.主要用到的方法是String类型的toInt方法.注意这个方法返回的是Int?,即一个整数可选类型.所以需要解封. var string = "1234"

关于Java中用Double型运算时精度丢失的问题

注:转自 https://blog.csdn.net/bleach_kids/article/details/49129943 在使用Java,double 进行运算时,经常出现精度丢失的问题,总是在一个正确的结果左右偏0.0000**1. 特别在实际项目中,通过一个公式校验该值是否大于0,如果大于0我们会做一件事情,小于0我们又处理其他事情. 这样的情况通过double计算出来的结果去和0比较大小,尤其是有小数点的时候,经常会因为精度丢失而导致程序处理流程出错. BigDecimal在<Eff

double和float进行小数计算精度不够

1.float和double只能用来作科学计算或者是工程计算,但在商业计算中我们要用java.math.BigDecimal 2.注意:double 和float转换为字符串类型造成进度丢失:直接用字符串表示double 和float 3.案例: package com.zhangwl.pg1113; import org.junit.Test; import java.math.BigDecimal; /** * @ClassName RunMain * @Description 演示小案例

java使double保留两位小数的多方法 java保留两位小数

这篇文章主要介绍了java使double类型保留两位小数的方法,大家参考使用吧 复制代码 代码如下: mport java.text.DecimalFormat; DecimalFormat    df   = new DecimalFormat("######0.00"); double d1 = 3.23456  double d2 = 0.0;double d3 = 2.0;df.format(d1); df.format(d2); df.format(d3); 3个结果分别为:

java中double变量保留小数问题

(转载自玄影池扁舟) 做java项目的时候可能经常会遇到double类型变量保留小数的问题,下面便把我的经验做个简短的总结: java中double类型变量保留小数问题大体分两种情况: (一):小数点后面位数过长,四舍五入保留指定位数: 可以用以下代码实现: public class TestDemo { public static void main(String[] args) {     double a=15.32743859;     double b=Math.round(a*100