JAVA 浮点数转化为百分数,分离整数和小数部分

JAVA 浮点数转化为百分数

public class DoubleToPercentformat {

/**

* 将double类型数据转换为百分比格式,并保留小数点前IntegerDigits位和小数点后FractionDigits位

* @param d

* @param IntegerDigits

* @param FractionDigits

* @return

*/

public static String getPercentFormat(double d,int IntegerDigits,int FractionDigits){

NumberFormat nf = java.text.NumberFormat.getPercentInstance();

nf.setMaximumIntegerDigits(IntegerDigits);//小数点前保留几位

nf.setMinimumFractionDigits(FractionDigits);// 小数点后保留几位

String str = nf.format(d);

return str;

}

}

pu
bl

ic class Convert{

public static void main(String args[]){

  float  num=28.8f;

  int i=(int)num;

  float  f=num-i;

 intln(num+"的整数部分="+i+"\t小数部分为"+f);

}

}
第一、楼上的方法并不是面向对象的思想,根本没法在实际中用,用的话还需要修改。
第二、楼上的方法截取小数部分后,后面的小数部分会多几个数字。比如,截取123.321的小数部分后,会显示0.32100055。
我的方法完全克服了楼上方法的缺点。

我先编写一各类ApartFloat用于分离float型浮点数。用户想要分离浮点数的时候,只需调用这个类里面的两个静态方法既可。
其中,returnIntegralPart(float n)方法用于返回要分离的浮点数的整数部分;returnDecimalPart(float n)方法用于返回要分离的浮点数的小数部分。
ApartFloat类源代码:
//这个类用于分解浮点数
public class ApartFloat{
	//提取浮点数的整数部分
	static int returnIntegralPart(float n){
		int i=(int)n;
		return i;
	}
	//提取浮点数的小数部分
	//提取小数部分时我把数字转换成字符串再进行截取
	//这样做就不会出现截得的小数后面增加其他数字的现象
	static String returnDecimalPart(float n){
		Float m=new Float(n);
		String i= String();
		int a= dexOf(".");
		i= bstring(a+1);
		return i;
	}
}

用户可以在任何地方的任何类里调用这两个方法来分离浮点数。例如,象下面这样调用:
public class Aaa{
	public static void main(String[] args){
		 intln("我需要一个浮点数123.321的整数部分:"+ turnIntegralPart(123.321f));
		 intln("我需要一个浮点数123.321的小数部分:"+ turnDecimalPart(123.321f));
	}
}
想分离谁就在括号里填谁即可,但注意一定要是float型。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-28 00:38:40

JAVA 浮点数转化为百分数,分离整数和小数部分的相关文章

Java中分别取数的整数及小数部分

import java.math.BigDecimal; import java.util.Scanner; /** * Created by Administrator on 2016/9/20. */ public class BigDecimalGetNumbers { public static void main(String args[]) { Scanner in = new Scanner(System.in); double dInput = in.nextDouble();

Java浮点数转人民币读法

把[整数部分]的数字,由个位开始,4个数字分为一组,最高位没有数字就补0,并记录总共的数组个数,总共有3组,也就3*4的二维数组: 对于每个数组统一处理,最后将最开头的"零去掉",将"亿"."万""元"字前面的"零"去掉: 当读取到0时,检查它的上一位是否为0,如果上一位是0,则不做处理,如果上一位不是0或者上一位不存在,均记下"零": 读取每个数字,转换为对应的大写汉字,并加上权重&q

mysql 将指定列的浮点数转化为整数

mysql 将指定列的浮点数转化为整数: update A set B =  cast(B as decimal(10,0))  -- 或者 update A set B = round(B,0) 例如:update hdcloude01.t_a01_eltable set t_a01_eltable.BatteryDal =  round(t_a01_eltable.BatteryDal, 0) where t_a01_eltable.`BatteryDal`  is not null;

Objective-C浮点数转化整数(向上取整、向下取整)

Objective-C拓展了C,自然很多用法是和C一致的.比如浮点数转化成整数,就有以下四种情况. 1.简单粗暴,直接转化 float f = 1.5; int a; a = (int)f; NSLog("a = %d",a); 输出结果是1.(int)是强制类型转化,丢弃浮点数的小数部分. 2.高斯函数,向下取整 float f = 1.6; int a; a = floor(f); NSLog("a = %d",a); 输出结果是1.floor()方法是向下取整

第二章 Java浮点数精确计算

1.实际意义 在实际开发中,如果需要进行float或double的精确计算(尤其是财务计算),直接使用float或double是不行的(具体的例子看下边的代码的main方法的测试结果),需要使用BigDecimal. 2.代码 package com.xxx.util; import java.math.BigDecimal; /** * 浮点数精准算法 */ public class BigDecimalArithUtil { private static final int DIV_SCAL

Java浮点数内存存储

转自: [解惑]剖析float型的内存存储和精度丢失问题 1.小数的二进制表示问题 首先我们要搞清楚下面两个问题: (1)  十进制整数如何转化为二进制数 算法很简单.举个例子,11表示成二进制数: 11/2=5   余   1 5/2=2   余   1 2/2=1   余   0 1/2=0   余   1 0   结束 所以:11二进制表示为(从下往上):1011 这里提一点:只要遇到除以后的结果为0了就结束了,大家想一想,所有的整数除以2是不是一定能够最终得到0.换句话说,所有的整数转变

输入一个浮点数,并输出该数的整数部分和小数部分

package javaapplication29; import java.util.Scanner;import java.util.StringTokenizer; /** * * @author qingzhu */public class JavaApplication29 { /** * @param args the command line arguments */ public static void main(String[] args) { String[] mess={"

Java浮点数float和double精确计算的精度误差问题总结

1.float整数计算误差 案例:会员积分字段采用float类型,导致计算会员积分时,7位整数的数据计算结果出现误差. 原因:超出float精度范围,无法精确计算. float和double的精度是由尾数的位数来决定的.浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响. float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字: double:2^5

java浮点数剖析

定点数表达法的缺点在于其形式过于僵硬,固定的小数点位置决定了固定位数的整数部分和小数部分,不利于同时表达特别大的数或者特别小的数.计算机系统采纳了所谓的浮点数表达方式.这种表达方式利用科学计数法来表达实数,即用一个尾数(Mantissa也叫有效数字 ),一个基数(Base),一个指数(Exponent)以及 一个表示正负的符号来表达实数.浮点数利用指数达到了浮动小数点的效果,从而可以灵活地表达更大范围的实数. 当一个浮点数的尾数为0,不论其阶码为何值,该浮点数的值都为0.当阶码的值为它能表示的最