<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    自寫自看

    java中double運算的問題

    double t1=34.0;
    double t2=2.55
    System.out.println(t1*t2);
    結果不等于 86.7

    解決方案 采用 java.math.BigDecimal
    此處有一個通用類

    1. import ?java.math.BigDecimal; ??
    2. ??
    3. /**?*/ /** ?
    4. *?由于Java的簡單類型不能夠精確的對浮點數進行運算,這個工具類提供精 ?
    5. *?確的浮點數運算,包括加減乘除和四舍五入。 ?
    6. */ ??
    7. ??
    8. public ? class ?Arith{ ??
    9. ??
    10. //默認除法運算精度 ??
    11. ??
    12. private ? static ? final ? int ?DEF_DIV_SCALE?=? 10 ; ??
    13. ??
    14. //這個類不能實例化 ??
    15. ??
    16. private ?Arith(){ ??
    17. ??
    18. } ??
    19. ??
    20. /**?*/ /** ?
    21. *?提供精確的加法運算。 ?
    22. *?@param?v1?被加數 ?
    23. *?@param?v2?加數 ?
    24. *?@return?兩個參數的和 ?
    25. */ ??
    26. ??
    27. public ? static ? double ?add( double ?v1, double ?v2){ ??
    28. ??
    29. BigDecimal?b1?=? new ?BigDecimal(Double.toString(v1)); ??
    30. ??
    31. BigDecimal?b2?=? new ?BigDecimal(Double.toString(v2)); ??
    32. ??
    33. return ?b1.add(b2).doubleValue(); ??
    34. ??
    35. } ??
    36. ??
    37. /**?*/ /** ?
    38. *?提供精確的減法運算。 ?
    39. *?@param?v1?被減數 ?
    40. *?@param?v2?減數 ?
    41. *?@return?兩個參數的差 ?
    42. */ ??
    43. ??
    44. public ? static ? double ?sub( double ?v1, double ?v2){ ??
    45. ??
    46. BigDecimal?b1?=? new ?BigDecimal(Double.toString(v1)); ??
    47. ??
    48. BigDecimal?b2?=? new ?BigDecimal(Double.toString(v2)); ??
    49. ??
    50. return ?b1.subtract(b2).doubleValue(); ??
    51. ??
    52. } ??
    53. ??
    54. /**?*/ /** ?
    55. *?提供精確的乘法運算。 ?
    56. *?@param?v1?被乘數 ?
    57. *?@param?v2?乘數 ?
    58. *?@return?兩個參數的積 ?
    59. */ ??
    60. ??
    61. public ? static ? double ?mul( double ?v1, double ?v2){ ??
    62. ??
    63. BigDecimal?b1?=? new ?BigDecimal(Double.toString(v1)); ??
    64. ??
    65. BigDecimal?b2?=? new ?BigDecimal(Double.toString(v2)); ??
    66. ??
    67. return ?b1.multiply(b2).doubleValue(); ??
    68. ??
    69. } ??
    70. ??
    71. /**?*/ /** ?
    72. *?提供(相對)精確的除法運算,當發生除不盡的情況時,精確到 ?
    73. *?小數點以后10位,以后的數字四舍五入。 ?
    74. *?@param?v1?被除數 ?
    75. *?@param?v2?除數 ?
    76. *?@return?兩個參數的商 ?
    77. */ ??
    78. ??
    79. public ? static ? double ?div( double ?v1, double ?v2){ ??
    80. ??
    81. return ?div(v1,v2,DEF_DIV_SCALE); ??
    82. ??
    83. } ??
    84. ??
    85. /**?*/ /** ?
    86. *?提供(相對)精確的除法運算。當發生除不盡的情況時,由scale參數指 ?
    87. *?定精度,以后的數字四舍五入。 ?
    88. *?@param?v1?被除數 ?
    89. *?@param?v2?除數 ?
    90. *?@param?scale?表示表示需要精確到小數點以后幾位。 ?
    91. *?@return?兩個參數的商 ?
    92. */ ??
    93. ??
    94. public ? static ? double ?div( double ?v1, double ?v2, int ?scale){ ??
    95. ??
    96. if (scale< 0 ){ ??
    97. ??
    98. throw ? new ?IllegalArgumentException( ??
    99. ??
    100. "The?scale?must?be?a?positive?integer?or?zero" ); ??
    101. ??
    102. } ??
    103. ??
    104. BigDecimal?b1?=? new ?BigDecimal(Double.toString(v1)); ??
    105. ??
    106. BigDecimal?b2?=? new ?BigDecimal(Double.toString(v2)); ??
    107. ??
    108. return ?b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); ??
    109. ??
    110. } ??
    111. ??
    112. /**?*/ /** ?
    113. *?提供精確的小數位四舍五入處理。 ?
    114. *?@param?v?需要四舍五入的數字 ?
    115. *?@param?scale?小數點后保留幾位 ?
    116. *?@return?四舍五入后的結果 ?
    117. */ ??
    118. ??
    119. public ? static ? double ?round( double ?v, int ?scale){ ??
    120. ??
    121. if (scale< 0 ){ ??
    122. ??
    123. throw ? new ?IllegalArgumentException( ??
    124. ??
    125. "The?scale?must?be?a?positive?integer?or?zero" ); ??
    126. ??
    127. } ??
    128. ??
    129. BigDecimal?b?=? new ?BigDecimal(Double.toString(v)); ??
    130. ??
    131. BigDecimal?one?=? new ?BigDecimal( "1" ); ??
    132. ??
    133. return ?b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); ??
    134. ??
    135. } ??
    136. ??
    137. } ??

    posted on 2007-12-10 20:47 昨夜人生 閱讀(3440) 評論(1)  編輯  收藏 所屬分類: Java

    Feedback

    # re: java中double運算的問題 2008-10-01 23:32 YEL

    DING  回復  更多評論   


    主站蜘蛛池模板: 亚洲小说区图片区另类春色| 日韩一区二区三区免费体验| 亚洲国产日韩在线视频| jizz免费在线影视观看网站| 亚洲天堂在线视频| 最好免费观看高清在线| 亚洲一区二区三区AV无码| 一区二区在线视频免费观看| 亚洲一级特黄大片在线观看| 中国一级毛片视频免费看| 久久久久亚洲精品美女| 999任你躁在线精品免费不卡| 亚洲精品动漫在线| 亚洲欧洲免费无码| 国产AV无码专区亚洲AV琪琪| 亚洲色偷偷综合亚洲AV伊人| 99免费精品视频| 亚洲高清视频在线播放| 无码一区二区三区AV免费| 国产精品亚洲综合网站| 亚洲天堂在线视频| 人妻无码一区二区三区免费 | 亚洲AV无码乱码在线观看代蜜桃| 亚洲片国产一区一级在线观看| 国产精品免费久久| 337p日本欧洲亚洲大胆精品555588| 在线精品一卡乱码免费| 最新亚洲人成无码网站| 久久精品国产精品亚洲艾草网美妙| 国产好大好硬好爽免费不卡 | 亚洲精品视频在线观看你懂的| a级午夜毛片免费一区二区| 亚洲欧洲精品在线| 国产又大又黑又粗免费视频| 中文无码日韩欧免费视频| 亚洲国产精品人久久电影| 免费观看毛片视频| 好紧我太爽了视频免费国产| 亚洲午夜精品久久久久久app| 日韩av无码久久精品免费| 亚洲日本一线产区和二线产区对比|