如何给浮点型的数据限制小数点后的位数,比如说,我想出一个float型的数据,但是不想让它小数点后的位数过多,只限制两位,怎么弄,大虾们说说
解决方案 »
- 杯具是如何产生的——读《转:迅雷亲历面经:笔试+上机+面试(完整JAVA面试题求解大讨论)》有感。
- 小菜鸟求助啊,欢迎高手指点!
- java编写的文件存储与读取程序
- jtable中嵌入combobox问题???多谢 relive(六道轮回,无想转生) ,问题依照你的思路已解决.
- 请教高手,一个非常简单的问题,呵呵呵,我好多分的
- 两个float类型的数字, 需要进行可定精度的相乘如何做?
- 怎么求两个Calendar对象相隔有多少天?
- 学习<Think in Java>第2章的问题,欢迎大家讨论。
- 在vj的application中怎样实现多窗体?
- 请大家帮我找找错,Thank you!
- 问一个让我郁闷一整天的问题!!!
- 一个io输入输出流的问题[希望大家帮帮我吧]
package com.css.sdmp.app.baseclass;
/**
* 标题: <BR></p>
* 描述: <BR>规约小数位数</p>
* 版权: Copyright (c) 2003<BR></p>
* 公司:
* 作者: 何岸 [([email protected])([email protected])]<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)); }
}
}
System.out.println(new DecimalFormat("0.0000").format(1234.2343455f));
楼上那个长长的程序都干了些什么?
不是可以锻炼自己吗?