ps遮罩怎么做:java一个新手的问题

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 04:31:55
/**编写一个字符界面的Java Application程序,接受用户输入的一个浮点数,把它的整数部分和小树部分分别输出.
*/
import java.io.*;
import java.lang.*;
class Input
{
public static void main(String[] args)
{
String s = "";
int iPart = 0;
float dPart = 0;
try{
BufferedReader in = new BufferedReader( new InputStreamReader( System.in ) );
s = in.readLine();

System.out.println("You entered: " + s);
iPart = ( int ) Float.parseFloat(s);
System.out.println("The integer part: " + iPart);
dPart = Float.parseFloat(s) - iPart;
System.out.println("The decimal part: " + dPart);
}catch(IOException e){}
}
}
为什么输入3.13 输出小数部分是0.13000011
怎么让输出的小数位数与我输入的相等呢,谢谢大家啦

楼上的 程序是正确的.但没说明理由;
理由是:浮点数值是采用二进制系统表示的.而二进制系统中无法精确的表示分数1/10.就像十进制无法表示1/3一样.如果需要数值计算中不含有任何舍入误差.就应该用BigDecimal类.
BigDecimal类在java.math包中.它用与实现任意精度的浮点数运算.
还有一个类.功能类似:BigInteger,它用与实现任意精度的浮点数运算.
你应该先查看BigDecimal的用法.然后自己试试看. 这样效果比较好.

import java.io.*;
import java.lang.*;
import java.math.BigDecimal;
class Input
{
public static void main(String[] args)
{
String s = "";
int iPart = 0;
float dPart = 0;
try
{
BufferedReader in = new BufferedReader( new InputStreamReader( System.in ) );
s = in.readLine();

System.out.println("You entered: " + s);
iPart = ( int ) Float.parseFloat(s);

System.out.println("The integer part: " + iPart);
//整数部分
String a_number=String.valueOf(iPart);
BigDecimal a=new BigDecimal(a_number);
//s
BigDecimal b=new BigDecimal(s);

//求结果
BigDecimal bigRes=b.subtract(a);

//dPart = Float.parseFloat(s) - iPart;
System.out.println("The decimal part: " +bigRes);
}
catch(IOException e)
{
}
}
}

你为什么不用拆分字符串呢