需求:字符串(字符串只有一位小數(shù))轉(zhuǎn)float進(jìn)行運(yùn)算, 將結(jié)果轉(zhuǎn)成字符串(保留一位小數(shù))
成都創(chuàng)新互聯(lián)是一家專業(yè)從事成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)的品牌網(wǎng)絡(luò)公司。如今是成都地區(qū)具影響力的網(wǎng)站設(shè)計(jì)公司,作為專業(yè)的成都網(wǎng)站建設(shè)公司,成都創(chuàng)新互聯(lián)依托強(qiáng)大的技術(shù)實(shí)力、以及多年的網(wǎng)站運(yùn)營(yíng)經(jīng)驗(yàn),為您提供專業(yè)的成都網(wǎng)站建設(shè)、營(yíng)銷型網(wǎng)站建設(shè)及網(wǎng)站設(shè)計(jì)開發(fā)服務(wù)!
直接上代碼:
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
說(shuō)實(shí)話,一開始我覺(jué)得代碼好像沒(méi)有問(wèn)題,字符串從0.1開始試了好多,結(jié)果都是對(duì)的。
然而,當(dāng)a1=“1.7”的時(shí)候,問(wèn)題出現(xiàn)了,輸出結(jié)果:1.8000001
嗯?是轉(zhuǎn)換方法有問(wèn)題? 在網(wǎng)上溜達(dá)半天,都是一個(gè)套路。
這是只能考慮從保留位數(shù)、精度入手。于是發(fā)現(xiàn)了 DecimalFormat
0 一個(gè)數(shù)字
# 一個(gè)數(shù)字,不包括 0
. 小數(shù)的分隔符的占位符
, 分組分隔符的占位符
; 分隔格式。
- 缺省負(fù)數(shù)前綴。
% 乘以 100 和作為百分比顯示
float f = 0.1f; String max ="1.7"; DecimalFormat df = new DecimalFormat("#########.#"); String s = df.format(Float.parseFloat(max)+f); System.out.println(s);
結(jié)果:1.8
OK,問(wèn)題解決!
以上這篇Java 字符串轉(zhuǎn)float運(yùn)算 float轉(zhuǎn)字符串的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持創(chuàng)新互聯(lián)。