给你一个显现类参考。
package com.css.sdmp.app.baseclass;
/**
* 标题: <BR></p>
* 描述: <BR>规约小数位数</p>
* 版权: Copyright (c) 2003<BR></p>
* 公司:
* 作者: 何岸 [(hean@css.com.cn)(anli99@263.net)]<BR>
* 版本: 1.0<BR>
*/
public class RuleDecimal
{
public RuleDecimal(){}
public static String getRuleFloatString(float initialValue)
{
return getRuleFloatString(initialValue,2);
}
/**
* 对小数进行规约位数显示
* @param value
* @param digit
* @return RuleFloatString
*/
public static String getRuleFloatString(float initialValue,int digit)
{
boolean plus=true;
int dotLong=digit;
float value=initialValue;
if(value<0)
{
plus=false;
value=-1*(value);
}
if(dotLong<0) dotLong=0;
if(dotLong>5) dotLong=5;
float increFloat=0.5F; //为四舍五入提供的截断误差前的增量。
for(int i=0;i<dotLong;i++)
{
increFloat *= 0.1F;
}
float endValue=value+increFloat;
int intValue=(int)endValue;
float floatValue= endValue - intValue;
StringBuffer sb=new StringBuffer();
for(int i=0;i<dotLong;i++)
{
floatValue *= 10; //放大小数到整数;
byte b= (byte)floatValue;
sb.append((char)('0'+b));
floatValue=floatValue-b;
}
String plusString=(dotLong>0) ? (String.valueOf(intValue)+"."+ sb.toString()) : String.valueOf(intValue);
return plus ? plusString : "-"+plusString;
}
public static void main(String[] args)
{
for(int i=0;i<=7;i++)
{
System.out.println("0.0F"+" "+getRuleFloatString(0.0F,i));
System.out.println("-0.0F"+" "+getRuleFloatString(-0.0F,i));
System.out.println("0.9688888888888F"+" "+getRuleFloatString(0.9688888888888F,i));
System.out.println("-0.9688888888888F"+" "+getRuleFloatString(-0.9688888888888F,i));
System.out.println("0.9999999999988F"+" "+getRuleFloatString(0.9999999999988F,i));
System.out.println("-0.4545499999999F"+" "+getRuleFloatString(-0.4545499999999F,i));
System.out.println("0.0999999999F"+" "+getRuleFloatString(0.0999999999F,i));
System.out.println("0.0099999999F"+" "+getRuleFloatString(0.0099999999F,i));
System.out.println("0.0009999999F"+" "+getRuleFloatString(0.0009999999F,i));
System.out.println("0.0000999999F"+" "+getRuleFloatString(0.0000999999F,i));
System.out.println("0.0000099999F"+" "+getRuleFloatString(0.0000099999F,i));
System.out.println("0.0000009999F"+" "+getRuleFloatString(0.0000009999F,i));
System.out.println("0.0000000999F"+" "+getRuleFloatString(0.0000000999F,i));
}
}
}