A. java String转float后值不对,字符串134886.07通过Float.parseFloat(134886.07)转换后的值为134886.06
您好,提问者:
因为float是单精度,精确不是很准,建议转换为double类型。
PS:8个基本类型中 两个浮点数,默认的是double,推荐使用double。
B. java中如何把一个String类型的变量转换成double型的
java中把String类型的变抄量转换成double类型变量的方法:
对于数值的字符串"12345",将其转化成数字12345做法如下:
String s="12345";
double d;
d=Double.parseDouble(s);
转化完成。
扩展内容:
(1)在Java中有8种数据类型来存储数值、字符和布尔值。
(2)整数型用来存储整数数值,即没有小数部分的数值。可以是正数,也可以是负数。整数数据在Java程序中有3种表示形式,分别为十进制、八进制和十六进制。
(3)整型数据类型有:byte、short、int、long
(4)布尔型数据类型有:true、false
C. java字符串转换为整型的问题
Integer.paresInt()是将字符串转换为整数,1.25转化时里面有“.”不是整数啊。所以会抛出异常。
Double.Double.parseDouble():将字符串转化为浮点数。
D. java如何将 byte [4] 转换到float
推荐答案是错误地把字节等同与字符。
byte b[]={0x41,(byte) 0xc8,0,0};
//方法1 流输入,适用于ME/SE环境
//默认大端数内,如果小端数,可以先翻容转数组
DataInputStream dis=new DataInputStream(new ByteArrayInputStream(b));
float f=dis.readFloat();
dis.close();
System.out.println(f);
//方法2 缓存输入,适用于SE/EE环境
ByteBuffer buf=ByteBuffer.allocateDirect(4); //无额外内存的直接缓存
//buf=buf.order(ByteOrder.LITTLE_ENDIAN);//默认大端,小端用这行
buf.put(b);
buf.rewind();
float f2=buf.getFloat();
System.out.println(f2);
都将显示读出来的浮点数25.0
E. [java] string类型转为double
精度的问题!用基本类型的double类型进行运算可能会丢失精度。而且特别大的数又没法处理。所以如果用BigDecimal这个类问题就解决了。这个类在java.Math包下。它可以处理任意精度的数据。对于楼主出现的问题,我从新写了段代码,供楼主参考。但是主要是还得查看API!代码如下:
importjava.math.*;
publicclassoopp
{
publicstaticvoidmain(String[]args)
{
Stringa="1467000000";
doubleaa=Double.parseDouble(a);
BigDecimalbeichushu=newBigDecimal(aa);
BigDecimalchushu=newBigDecimal(100000000);
BigDecimalresult=beichushu.divide(chushu,newMathContext(4));//MathConText(4)表示结果精确4位!
booleanisTrue=String.valueOf(result).equals("14.67");
System.out.println("1467000000除以100000000="+result);
System.out.println(result+"与14.67比较的结果是"+isTrue);
}
}