String转double或者float会有精度丢失的问题

float  [] value=new   float[5];

value[0]=Float.parseFloat(rs.getString(1));
value[1]=Float.parseFloat(rs.getString(2));
value[2]=Float.parseFloat(rs.getString(1));
value[4]=Float.parseFloat(rs.getInt(1)+"");

BigDecimal b1 = new BigDecimal(Float.toString(value[0]));
BigDecimal b2 = new BigDecimal(Float.toString(value[1]*3));
BigDecimal b3 = new BigDecimal(Float.toString(value[2]));

value[3]=(b1.subtract(b2)).subtract(b3).floatValue();

转成BigDecimal进行计算

时间: 2024-10-04 04:01:47

String转double或者float会有精度丢失的问题的相关文章

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

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

float及double类型减法运算时精度丢失问题

当float和double类型在进行减法运算时,会出现精度丢失问题,这种问题主要是由于计算机中普遍使用2进制所造成的.在此做为记录,防止日后遗忘.     public static void main(String[] args) {         float a = 2.1f;         float b = 2.0f;         float c = a - b;         System.out.println("a-b=" + c);     }     //输

float,double等精度丢失问题 float,double内存表示

问题提出:12.0f-11.9f=0.10000038,"减不尽"为什么? 来自MSDN的解释: http://msdn.microsoft.com/zh-cn/c151dt3s.aspx 为何浮点数可能丢失精度浮点十进制值通常没有完全相同的二进制表示形式. 这是 CPU 所采用的浮点数据表示形式的副作用. 为此,可能会经历一些精度丢失,并且一些浮点运算可能会产生意外的结果. 导致此行为的原因是下面之一: 十进制数的二进制表示形式可能不精确. 使用的数字之间类型不匹配(例如,混合使用浮

【转】JAVA程序中Float和Double精度丢失问题

原文网址:http://blog.sina.com.cn/s/blog_827d041701017ctm.html 问题提出:12.0f-11.9f=0.10000038,"减不尽"为什么? 来自MSDN的解释: http://msdn.microsoft.com/zh-cn/c151dt3s.aspx 为何浮点数可能丢失精度浮点十进制值通常没有完全相同的二进制表示形式. 这是 CPU 所采用的浮点数据表示形式的副作用.为此,可能会经历一些精度丢失,并且一些浮点运算可能会产生意外的结果

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

iOS - Json解析精度丢失处理(NSString, Double, Float)

开发中处理处理价格金额问题, 后台经常返回float类型, 打印或转成NSString都会有精度丢失问题, 因此使用系统自带的NSDecimalNumber做处理, 能解决这问题:经过测试其实系统NSDecimalNumber是对有问题值做了四舍五入处理 ?    还有经过测试, 重要的事说三遍:?处理精度有关的数据请用double?处理精度有关的数据请用double?处理精度有关的数据请用double     float testDouble = [jsonDict[@"Body"]

String数据类型转换成long、int、double、float、boolean、char等七种数据类型

String c="123456"; //当String类型数据 要转换成int.double.float.long等数据类型时,其数据必须由数字构成, //当String类型数据由汉字或字母组成时转换成int.double.float.long等数据类型时,程序报错 //String类型转换成long类型 //String类型数据转换成long类型时 String类型的数据必须是数字构成 long n=Long.parseLong(c); System.out.println(&qu