关于限制浮点数位数的类

原创 2006年05月27日 00:50:00

给你一个显现类参考。


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));

    }
  }
}

相关文章推荐

【ios学习记录】- UITextField输入浮点数的限制

通常在编辑框中输入一些货品数量,金额时,我们都会做一些输入的判断限制。例如不能输入非法字符,只能输入数字等等。现把最近遇到的一些输入限制需求展现如下:1、 输入小数位不能超过两位; 2、 不能重...

限制input输入符合规则的浮点数

$('#col-sm-2, #min_goods_amount').keydown(function(e){ return formatInput(e); }); ...
  • wang350
  • wang350
  • 2015年12月26日 18:46
  • 1466

C++ 如何控制浮点数的位数

在C++中输出一个浮点数n,并保留指定的小数位数,应该怎么处理呢?首先先把iomanip头文件包含进来,然后对浮点数n按下列操作输出(假设保留2位小数): cout (以下来自...

【程序设计】浮点数有效位数,与零值的比较,两两比较的问题。

【程序设计】浮点数有效位数,与零值的比较,两两比较的问题。

C语言printf(""),浮点数打印保留有效位数,小数部分的四舍五入

1.printf("%3.0f",floatNum):不保留小数 说明:%3.0f表明待打印的浮点数(floatNum)至少占3个字符宽,且不带小数点和小数部分,整数部分至少占3个位宽; 注意:这里的...
  • abcdu1
  • abcdu1
  • 2017年07月13日 19:16
  • 1656

C语言计算浮点数的小数位数,屏蔽掉了浮点运算的误差

第一次去计算个
  • gdutxzy
  • gdutxzy
  • 2014年08月02日 23:08
  • 1254

32位限位浮点数乘法器

  • 2015年07月12日 21:23
  • 13.09MB
  • 下载

使用FPU Control Word寄存器控制计算整形与浮点型混合相加的结果以及对浮点数异常相关位Mask的处理

FPU 特殊作用寄存器中有一个控制寄存器,该寄存器的作用是控制浮点数计算结果的四舍五入以及对相关异常的静默处理 Control word寄存器含有16位,可以将其内容保存在一个WORD 大小的内存变...

定点数与浮点数

  • 2015年03月17日 21:12
  • 3.92MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于限制浮点数位数的类
举报原因:
原因补充:

(最多只允许输入30个字)