java,float转string,结果错误问题

问题描述

有一个float类型的数字ff,其值为9999999.99F;当把它转换成字符串的时候,结果变成了1E07;当然使用double类型是没有问题的;试了以下几种方法:1. float -> long -> double采用先乘以一个数,再除以这个数的方法;100、1000时没有效果,结果还是1E07;10000时精度丢失了,结果变成了9999999.752. BigDecimalBigDecimal db = new BigDecimal(ff);结果是1000000,只是没有科学计数法表示而已,还是不对3. 直接toStirng((Float)(ff)).toString();结果是1E07;4. DecimalFormatDecimalFormat df = new DecimalFormat("0.00");System.out.println(df.format(ff));结果是10000000.00,还是不行上面这几种方式,对于普通的float类型的值是基本是可以的;但是对于这里的ff都不行。各位有什么好的招没有,希望能够处理ff,同时兼容其他的Float类型。谢谢!

解决方案

float有精度限制的。float只能表示7位有效数字。9999999.99F 已经超出了float的精度范围。换言之, 9999999.99F在内存中存储的值就是 1E07后面的转换都没用
解决方案二:
DecimalFormat df = new DecimalFormat("0.00");String newff = df.format(ff);你写的有问题,应该在DecimalFormat设置精度后,再格式化
解决方案三:
BigDecimal最适合你
解决方案四:
float只能表示7位有效数字 ,这个数字不能在用这个类型了,支持1楼
解决方案五:
超出精度了 用double型
解决方案六:
用String.valueOf(floatValue);

时间: 2024-09-10 09:51:40

java,float转string,结果错误问题的相关文章

JAVA中的异常与错误处理详解

  异常与错误: 异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种方式,VM让你知道,你(开发人员)已经犯了个错误,现在有一个机会来修改它.Java中使用异常类来表示异常,不同的异常类代表了不同的异常.但是在Java中所有的异常都有一个基类,叫做Exception. 错误: 它指的是一个合理的应用程序不能截获的严重的问题.大多数都是反常的情况.错误是VM的一个故障(虽然它可以是任何系统级的服务

JAVA键盘监听,错误在哪里

问题描述 JAVA键盘监听,错误在哪里 解决方案 java 键盘监听java 键盘监听Java:键盘全局监听 解决方案二: http://zhidao.baidu.com/question/577201357.html?qbl=relate_question_0 解决方案三: 编译问题,你这个方法调用参数类型是错误的,键盘监听事件的参数是addKeyListener的参数必须是实现KeyListener这个接口的类. 你的mb类型定义的是JPanel,所以会报编译错误.你需要定义一个类实现Key

用java发邮件 出现如下错误 ,代码如下

问题描述 用java发邮件 出现如下错误 ,代码如下 /** 表示邮件类,你需要设置:账户名和密码.收件人.抄送(可选).暗送(可选).主题.内容,以及附件(可选) 在创建了Mail对象之后 可以调用它的setSubject().setContent(),设置主题和正文 也可以调用setFrom()和 addToAddress(),设置发件人,和添加收件人. 也可以调用addAttch()添加附件 创建AttachBean:new AttachBean(new File("..."),

深入探讨JAVA中的异常与错误处理_java

异常与错误: 异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种方式,VM让你知道,你(开发人员)已经犯了个错误,现在有一个机会来修改它.Java中使用异常类来表示异常,不同的异常类代表了不同的异常.但是在Java中所有的异常都有一个基类,叫做Exception. 错误: 它指的是一个合理的应用程序不能截获的严重的问题.大多数都是反常的情况.错误是VM的一个故障(虽然它可以是任何系统级的服务).

解析Java中的String对象的数据类型

  解析Java中的String对象的数据类型     [摘要] 本文将全面解析Java中的String对象的数据类型.[关键字] Java 技巧   1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. new String()和new String("")都是申明一个新的空字符串,是空串不是null: 3. String str="

深入探讨Java中的异常与错误处理

Java中的异常处理机制已经比较成熟,我们的Java程序到处充满了异常的可能,如果对这些异常不做预先的处理,那么将来程序崩溃就无从调试,很难找到异常所在的位置.本文将探讨一下Java中异常与错误的处理方法,一起来看看. 异常与错误: 异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种方式,VM让你知道,你(开发人员)已经犯了个错误,现在有一个机会来修改它.Java中使用异常类来表示异常,不同的异

Java中的String与常量池

string是java中的字符串.String类是不可变的,对String类的任何改变,都是返回一个新的String类对象.下面介绍java中的String与常量池. 1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. new String()和new String("")都是申明一个新的空字符串,是空串不是null: 3. String st

Java Web项目经常提示错误

Java Web项目经常提示错误"This project needs to migrate WTP metadata",简单的解决方法就是右击项目然后选择Validate,做完validate后错误就消失了. 出处:http://stevex.blog.51cto.com/4300375/941669

Java编译器对于String常量表达式的优化

首先把问题摆出来,先看这个代码 String a = "ab"; String b = "a" + "b"; System.out.println((a == b)); 打印结果会是什么?类似这样的问题,有人考过我,我也拿来考过别人(蛮好玩的,大家也可以拿来问人玩),一般答案会是以下几种: 1.true "a" + "b" 的结果就是"ab",这样a,b都是"ab"了

java 游戏开发-Java 运行程序时,错误调用函数,

问题描述 Java 运行程序时,错误调用函数, 做的一个棋类小游戏,有条规则是棋子变成王后,可以远距离吃子,在编写王吃子规则时,需要使用if语句对是否是王进行判断,但是在运行时,还没有变成王,就输出判断为王时的提示语句,