java如何将一个float型数的整数部分和小数分别输出显示

目录
  • 将一个float型数的整数部分和小数分别输出显示
    • 三种方法
  • java. float 取整

将一个float型数的整数部分和小数分别输出显示

三种方法

方一:直接类型转换,再加减,问题是类型转换导致的小数位数精确度变化,目前没找到解决方法

方二:转换成字符串后运用.split方法直接从小数点处切分

方三:转换成字符串后,标记小数点位置后,用substring方法分别构造两个子字符串

注意点:

  • 负数取整,例 -1.2 的整数部分是 -2,小数部分是0.8
//三种方法
//负数和正数的整数情况需要分开考虑
import java.util.*;
public class Split {

	public static void main(String[] args) {
		float num,b;
		int a,pointIndex;

		Scanner s = new Scanner(System.in);
		System.out.println("请输入一个float数:");
		num = s.nextFloat();
//		判断正负
		if(num >=0) {
//			正数部分计算
//			方法一:直接转换数字类型后加减,问题是转换类型会导致小数部分变化,不知道怎么解决!!
			a = (int) num;
			b = num - a;
			System.out.println(num + "整数部分:" + a);
			System.out.println(num + "小数部分:" + b);

//			方法二:转换成字符串,用方法split按小数点前后分割
			String str = String.valueOf(num);                   //将float类型转换成字符串
			String[] ary = str.split("\\.");
			System.out.println(num + "整数部分为:" + ary[0]);
			System.out.println(num + "小数部分为:" + "0." + ary[1]);

//			方法三:同样转换成字符串,用方法indexOf标记小数点位置
			pointIndex = str.indexOf('.');
			System.out.println(num + "的整数部分为:" + str.substring(0,pointIndex));
			System.out.println(num + "的小数部分为:" + "0" + str.substring(pointIndex,str.length()));
	    }

//		负数部分计算,注意,-1.7的正数部分是-2,小数部分是0.3
		else {
//			方一
			a = (int) num - 1;
			b = num - a;
			System.out.println(num + "整数部分:" + a);
			System.out.println(num + "小数部分:" + b);
//			方二
			String str = String.valueOf(num);                   //将float类型转换成字符串
			String[] ary = str.split("\\.");
			a = Integer.parseInt(ary[0]) -1;
			b = 1 - Float.parseFloat("0." + ary[1]);            //需要计算,再次转换成float类型
			System.out.println(num + "整数部分为:" + a);
			System.out.println(num + "小数部分为:" + b);

//			方三
			pointIndex = str.indexOf('.');
			a = Integer.parseInt(str.substring(0,pointIndex)) -1;
			b = 1 - Float.parseFloat("0" + str.substring(pointIndex));
			System.out.println(num + "的整数部分为:" + a);
			System.out.println(num + "的小数部分为:" + b);
		}
	}
}

这一题非常适合后面做按钮练习

java. float 取整

  • 向上取整:
Math.ceil() //只要有小数都+1
  • 向下取整:
Math.floor() //不取小数
  • 四舍五入:
Math.round() //四舍五入

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java中用float时,数字后面加f,这样是为什么你知道吗

    目录 Java float 与 double 的区别 1.float是单精度浮点数 2.java中默认声明的小数是double类型的 3.对编程人员来而 Java float.double.long类型变量赋值添加f.d.L尾缀问题 1.添加尾缀说明 2.不添加尾缀也不会报错的情况 3.总结 Java float 与 double 的区别 1.float是单精度浮点数 内存分配4个字节,占32位,有效小数位6-7位 double是双精度浮点数,内存分配8个字节,占64位,有效小数位15位 2.j

  • Java Float 保留小数位精度的实现

    目录 Float 保留小数位精度 Float 浮点型数据保留两位小数 1.DecimalFormat 2.Math.round(): Float 保留小数位精度 DecimalFormat decimalFormat=new DecimalFormat(".00"); return Float.valueOf(super.getDecimalFormat().format(new BigDecimal(handleTime))); Float 浮点型数据保留两位小数 用过两种方法:De

  • 关于Java float和double精度范围大小

    目录 Java float和double精度范围大小 一.小数的二进制转换(浮点数) 二.浮点数在计算机中的存储 三.指数位的偏移量与无符号表示 四.小结一下 float和double的范围到底是多少 Java float和double精度范围大小 要想理解float和double的取值范围和计算精度,必须先了解小数是如何在计算机中存储的: 举个例子:78.375,是一个正小数.要在计算机中存储这个数,需要把它表示为浮点数的格式,先执行二进制转换: 一.小数的二进制转换(浮点数) 78.375的

  • Java中float类型的范围及其与十六进制的转换例子

    float占用4个字节,和int是一样,也就是32bit.       第1个bit表示符号,0表示正数,1表示负数,这个很好理解,不用多管.       第2-9个bit表示指数,一共8为(可以表示0-255),这里的底数是2,为了同时表示正数和负数,这里要减去127的偏移量.这样的话范围就是(-127到128),另外全0和全1作为特殊处理,所以直接表示-126到127.      剩下的23位表示小数部分,这里23位表示了24位的数字,因为有一个默认的前导1(只有二进制才有这个特性).   

  • java如何将一个float型数的整数部分和小数分别输出显示

    目录 将一个float型数的整数部分和小数分别输出显示 三种方法 java. float 取整 将一个float型数的整数部分和小数分别输出显示 三种方法 方一:直接类型转换,再加减,问题是类型转换导致的小数位数精确度变化,目前没找到解决方法 方二:转换成字符串后运用.split方法直接从小数点处切分 方三:转换成字符串后,标记小数点位置后,用substring方法分别构造两个子字符串 注意点: 负数取整,例 -1.2 的整数部分是 -2,小数部分是0.8 //三种方法 //负数和正数的整数情况

  • 基于Java解决华为机试实现整数与IP地址间的转换 

    目录 1.简述 示例1 2.代码实现 1.简述 描述: 原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成 一个长整数. 举例:一个ip地址为10.0.3.193 每段数字                相对应的二进制数 10                          00001010 0                            00000000 3                            0000

  • 详解Java判断是否是整数,小数或实数的正则表达式

    经常会遇到这样的情况,需要判断一个字符串是否是一个合法的数,包括整数,小数或者实数. 网上查到很多文章大多是判断这个字符串是否全为数字,比如下面这段来自StringUtils的代码,可以看到,13.2这样的数字实际上会返回false,可是,他的确是一个数字. public static boolean isNumeric(String str) { if (str == null) { return false; } int sz = str.length(); for (int i = 0;

  • Java实现提取不重复的整数实例

    题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数. 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺序,返回一个不含重复数字的新的整数 输入例子: 9876673 输出例子: 37689 import java.util.HashSet; import java.util.Set; import java.util.Scanner; public class Main{ public static int noRepeatNum(int n

  • java 实现将一个string保存到txt文档中

    实例如下所示: private static String savefile = "E:\\test.txt"; private static void saveAsFileWriter(String content) { FileWriter fwriter = null; try { fwriter = new FileWriter(savefile); fwriter.write(content); } catch (IOException ex) { ex.printStack

  • Java 字符串转float运算 float转字符串的方法

    需求:字符串(字符串只有一位小数)转float进行运算, 将结果转成字符串(保留一位小数) 直接上代码: float f1 = 0.1f; String a1 ="1.5"; System.out.println(Float.parseFloat(a1)+f1); 答案:1.6 float f1 = 0.1f; String a1 ="1.6"; System.out.println(Float.parseFloat(a1)+f1); 答案:1.7 说实话,一开始我

  • python 解决数据库写入时float自动变为整数的问题

    目录 数据库写入时float自动变为整数问题 问题描述 问题解决方案 float所表示的范围 数据库写入时float自动变为整数问题 问题描述 今天用python插入数据到mysql时遇到个问题,明明数据库设置的字段数据类型是float,要存的数据也是float类型,但是存进去后就变成了整数了,比如0.98变成了1. 发现实现因为我创建表的sql语句有问题,因为使用Navicat直接导出的sql语句 表的sql语句如下 CREATE TABLE `traffic_and_weather` (  

  • Android 限制edittext 整数和小数位数 过滤器(详解)

    写了一个过滤器,根据需要限制edittext输入的整数和小数位,如下代码: package allone.verbank.apad.client.component; import android.text.InputFilter; import android.text.Spanned; /** * * @Title: ComponentDigitCtrlFilter.java * @Package allone.verbank.apad.client.component * @Descrip

  • java的Map集合中按value值进行排序输出的实例代码

    java的Map集合中按value值进行排序输出的实例代码 import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; import java.util.Map; import java.util.Set; public class Test { public static void main(String[] args) { Map<String ,Integer> map = new Has

  • C++中几种将整数转换成二进制输出的方法总结

    看<编程之美>第二节的时候,它是定义的一个整型,然后取位.但是他的那个或运算符号好像写错了,写成了异或符号"^",应该是"|".我就突然对二进制的输出感兴趣了.想知道怎样输出二进制.我们知道C++输出十六进制是cout〈〈hex〈〈 a:而八进制是cout〈〈 ocx〈〈 a;二进制则没有默认的输出格式,需要自己写函数进行转换,于是上网搜索了一下.网上思路真是广泛啊. 下面列出一些方法.  #include 〈iostream〉 #include 〈li

随机推荐