欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

String轉(zhuǎn)double失去精度問題及解決

 更新時間:2023年07月11日 09:16:28   作者:老四就是我  
這篇文章主要介紹了關(guān)于String轉(zhuǎn)double失去精度問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

String轉(zhuǎn)double失去精度問題

最近遇到一個坑,19.9的字符串轉(zhuǎn)double變成19.89,坑死我了。

現(xiàn)在把更改后的代碼貼出來

String s = "19.9";
BigDecimal temp = BigDecimal.valueOf(Double.valueOf(s));
// 將temp乘以100
temp = temp.multiply(BigDecimal.valueOf(100));
int sum = temp.intValue();
System.out.println(sum);

這樣親測不會失去精度。最后說一句,細節(jié)很重要,特別是字符串轉(zhuǎn)其他類型的時候。

Java精度丟失之String轉(zhuǎn)Double轉(zhuǎn)int

項目遇到一種需求

服務(wù)器返回我“0.850”,我需要顯示八五折

看起來很簡單,于是代碼出來了:

?Double d = Double.parseDouble("0.850");
?int result = (int) (d*100);

隨便找了兩個數(shù)試了試都沒問題就以為大功告成了,誰知道測試的同事告訴我0.570顯示的是56而不是57,我抱著懷疑的態(tài)度驗證了一下,的確是我錯了!

我心里一驚,是不是還有其他的特殊數(shù)字也會出現(xiàn)這種詭異的現(xiàn)象呢?

?public static void main(String[] args) {
? ? ? ? for(int i=0;i<10;i++){
? ? ? ? ? ? for (int j=0;j<10;j++){
? ? ? ? ? ? ? ? for(int k=0;k<10;k++){
? ? ? ? ? ? ? ? ? ? getUnNormalNumber(i,j,k);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? private static ?void getUnNormalNumber(int i,int j,int k){
? ? ? ? String test = "0." + i + j + k;
? ? ? ? Double d = Double.parseDouble(test);
? ? ? ? int result = (int) (d*100);
? ? ? ? if(result/10==i&&result%10==j){
? ? ? ? }else {
? ? ? ? ? ? System.out.println(test);
? ? ? ? }
? ? }

經(jīng)過驗證,果然有三個數(shù)是特殊的數(shù)字!

0.290
0.570
0.580

解決辦法

private static String getSuitableString(String test) {
? ? ? ? String array[] = test.split("\\.");
? ? ? ? if(array[1]==null) { return ""; }
? ? ? ? char[] chars = array[1].toCharArray();
? ? ? ? if (chars.length>=2){
? ? ? ? ? ? return chars[0]+""+chars[1];
? ? ? ? }else {
? ? ? ? ? ? return ?chars[0]+"";
? ? ? ? }
? ? }

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • IntelliJ IDEA 安裝目錄的核心文件的功能及用法

    IntelliJ IDEA 安裝目錄的核心文件的功能及用法

    這篇文章我們主要講解一下 IntelliJ IDEA 安裝目錄中的一些核心文件的功能及用法,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-10-10
  • SpringBoot集成canal實現(xiàn)示例解析

    SpringBoot集成canal實現(xiàn)示例解析

    這篇文章主要為大家介紹了springboot整合canal的示例實現(xiàn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多多進步,早日升職加薪
    2022-02-02
  • SpringBoot+Shiro+LayUI權(quán)限管理系統(tǒng)項目源碼

    SpringBoot+Shiro+LayUI權(quán)限管理系統(tǒng)項目源碼

    本項目旨在打造一個基于RBAC架構(gòu)模式的通用的、并不復雜但易用的權(quán)限管理系統(tǒng),通過SpringBoot+Shiro+LayUI權(quán)限管理系統(tǒng)項目可以更好的幫助我們掌握springboot知識點,感興趣的朋友一起看看吧
    2021-04-04
  • java并發(fā)訪問重復請求過濾問題

    java并發(fā)訪問重復請求過濾問題

    本篇文章給大家分享了關(guān)于java并發(fā)訪問重復請求過濾的相關(guān)問題以及解決方法,對此有需要的朋友參考學習下。
    2018-05-05
  • Java序列化JSON丟失精度問題的解決方法(修復Long類型太長)

    Java序列化JSON丟失精度問題的解決方法(修復Long類型太長)

    這篇文章主要給大家介紹了關(guān)于Java序列化JSON丟失精度問題的解決方法,修復Long類型太長的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-03-03
  • JDK8 HashMap擴容機制分析詳解

    JDK8 HashMap擴容機制分析詳解

    這篇文章主要為大家介紹了JDK8 HashMap擴容機制分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • StreamAPI多次消費一個stream代碼實例

    StreamAPI多次消費一個stream代碼實例

    這篇文章主要介紹了StreamAPI多次消費一個stream代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • Java 根據(jù)貸款年限對應(yīng)利率計算功能實現(xiàn)解析

    Java 根據(jù)貸款年限對應(yīng)利率計算功能實現(xiàn)解析

    這篇文章主要介紹了Java 根據(jù)貸款年限對應(yīng)利率計算功能實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • 兩個小例子輕松搞懂 java 中遞歸與尾遞歸的優(yōu)化操作

    兩個小例子輕松搞懂 java 中遞歸與尾遞歸的優(yōu)化操作

    這篇文章主要介紹了兩個小例子輕松搞懂 java 中遞歸與尾遞歸的優(yōu)化操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Spring Hibernate實現(xiàn)分頁功能

    Spring Hibernate實現(xiàn)分頁功能

    這篇文章主要為大家詳細介紹了Spring Hibernate實現(xiàn)分頁功能的相關(guān)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05

最新評論