java如何將一個(gè)float型數(shù)的整數(shù)部分和小數(shù)分別輸出顯示
將一個(gè)float型數(shù)的整數(shù)部分和小數(shù)分別輸出顯示
三種方法
方一:直接類型轉(zhuǎn)換,再加減,問(wèn)題是類型轉(zhuǎn)換導(dǎo)致的小數(shù)位數(shù)精確度變化,目前沒(méi)找到解決方法
方二:轉(zhuǎn)換成字符串后運(yùn)用.split方法直接從小數(shù)點(diǎn)處切分
方三:轉(zhuǎn)換成字符串后,標(biāo)記小數(shù)點(diǎn)位置后,用substring方法分別構(gòu)造兩個(gè)子字符串
注意點(diǎn):
- 負(fù)數(shù)取整,例 -1.2 的整數(shù)部分是 -2,小數(shù)部分是0.8
//三種方法
//負(fù)數(shù)和正數(shù)的整數(shù)情況需要分開(kāi)考慮
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("請(qǐng)輸入一個(gè)float數(shù):");
num = s.nextFloat();
// 判斷正負(fù)
if(num >=0) {
// 正數(shù)部分計(jì)算
// 方法一:直接轉(zhuǎn)換數(shù)字類型后加減,問(wèn)題是轉(zhuǎn)換類型會(huì)導(dǎo)致小數(shù)部分變化,不知道怎么解決??!
a = (int) num;
b = num - a;
System.out.println(num + "整數(shù)部分:" + a);
System.out.println(num + "小數(shù)部分:" + b);
// 方法二:轉(zhuǎn)換成字符串,用方法split按小數(shù)點(diǎn)前后分割
String str = String.valueOf(num); //將float類型轉(zhuǎn)換成字符串
String[] ary = str.split("\\.");
System.out.println(num + "整數(shù)部分為:" + ary[0]);
System.out.println(num + "小數(shù)部分為:" + "0." + ary[1]);
// 方法三:同樣轉(zhuǎn)換成字符串,用方法indexOf標(biāo)記小數(shù)點(diǎn)位置
pointIndex = str.indexOf('.');
System.out.println(num + "的整數(shù)部分為:" + str.substring(0,pointIndex));
System.out.println(num + "的小數(shù)部分為:" + "0" + str.substring(pointIndex,str.length()));
}
// 負(fù)數(shù)部分計(jì)算,注意,-1.7的正數(shù)部分是-2,小數(shù)部分是0.3
else {
// 方一
a = (int) num - 1;
b = num - a;
System.out.println(num + "整數(shù)部分:" + a);
System.out.println(num + "小數(shù)部分:" + b);
// 方二
String str = String.valueOf(num); //將float類型轉(zhuǎn)換成字符串
String[] ary = str.split("\\.");
a = Integer.parseInt(ary[0]) -1;
b = 1 - Float.parseFloat("0." + ary[1]); //需要計(jì)算,再次轉(zhuǎn)換成float類型
System.out.println(num + "整數(shù)部分為:" + a);
System.out.println(num + "小數(shù)部分為:" + b);
// 方三
pointIndex = str.indexOf('.');
a = Integer.parseInt(str.substring(0,pointIndex)) -1;
b = 1 - Float.parseFloat("0" + str.substring(pointIndex));
System.out.println(num + "的整數(shù)部分為:" + a);
System.out.println(num + "的小數(shù)部分為:" + b);
}
}
}
這一題非常適合后面做按鈕練習(xí)
java. float 取整
- 向上取整:
Math.ceil() //只要有小數(shù)都+1
- 向下取整:
Math.floor() //不取小數(shù)
- 四舍五入:
Math.round() //四舍五入
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于spring中bean注冊(cè)的優(yōu)先級(jí)分析
Spring框架中,Bean的定義方式主要有三種:XML定義、注解掃描和配置類中的@Bean注解,在Bean注冊(cè)過(guò)程中,XML定義的GenericBeanDefinition優(yōu)先級(jí)最高2024-09-09
基于kafka實(shí)現(xiàn)Spring Cloud Bus消息總線
消息總線是一種通信工具,可以在機(jī)器之間互相傳輸消息、文件等,這篇文章主要介紹了如何利用kafka實(shí)現(xiàn)SpringCloud Bus消息總線,感興趣的可以學(xué)習(xí)一下2022-04-04
java實(shí)現(xiàn)航空用戶管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)航空用戶管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
java實(shí)現(xiàn)表格數(shù)據(jù)的存儲(chǔ)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)表格數(shù)據(jù)的存儲(chǔ),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04
Mybatis-Plus實(shí)現(xiàn)SQL攔截器的示例
這篇文章主要介紹了Mybatis-Plus實(shí)現(xiàn)一個(gè)SQL攔截器,通過(guò)使用SQL攔截器,開(kāi)發(fā)人員可以在執(zhí)行SQL語(yǔ)句之前或之后對(duì)其進(jìn)行修改或記錄,從而更好地控制和優(yōu)化數(shù)據(jù)庫(kù)操作,對(duì)Mybatis-Plus?SQL攔截器相關(guān)知識(shí)感興趣的朋友一起看看吧2023-05-05

