1. 程式人生 > >Java BigDemical在工作中的應用(主要用於錢的處理)

Java BigDemical在工作中的應用(主要用於錢的處理)

bigDecimal在java.math包下,提供用於執行任意精度小數演算法的類。

BigDecimal 不可變的、任意精度的有符號十進位制數。

        java.math.BigDecimal

BigDecimal類使使用者完全控制舍入行為。如果未指定舍入模式,並且無法表示準確結果,則丟擲一個異常;否則,通過向該操作提供適當的MathContext物件,可以對已選擇的精度和舍入模式執行計算。在商業計算中要用BigDecimal。BigDecimal所建立的是物件,我們不能使用傳統的+、-、*、/等算術運算子直接對其物件進行數學運算,而必須呼叫其相對應的方法。方法中的引數也必須是BigDecimal的物件。構造器是類的特殊方法,專門用來建立物件,特別是帶有引數的物件。

常用構造方法:可以將String型別的數字,int,double,long作為構造方法的引數傳入進行構造一個BigDecimal物件。

常用方法:

加減乘除

add(BigDecimal)        BigDecimal物件中的值相加,然後返回這個物件。
subtract(BigDecimal) BigDecimal物件中的值相減,然後返回這個物件。
multiply(BigDecimal)  BigDecimal物件中的值相乘,然後返回這個物件。
divide(BigDecimal)     BigDecimal物件中的值相除,然後返回這個物件。

toString()                將BigDecimal物件的數值轉換成字串。
doubleValue()          將BigDecimal物件中的值以雙精度數返回。
floatValue()             將BigDecimal物件中的值以單精度數返回。
longValue()             將BigDecimal物件中的值以長整數返回。
intValue()               將BigDecimal物件中的值以整數返回。

將計算結果進行格式化:

  	
//金額
        NumberFormat currency =NumberFormat.getCurrencyInstance();
        //利率
        NumberFormat percent = NumberFormat.getPercentInstance();
        //小數點後最多三位
        percent.setMaximumFractionDigits(3);
        
        BigDecimal loanMoney = new BigDecimal(12345.32);    //貸款金額
        BigDecimal rate = new BigDecimal(0.004);    //利率
        
        BigDecimal intrest = loanMoney.multiply(rate);    //利息
        
        System.out.println("貸款:"+currency.format(loanMoney));
        System.out.println("利率:"+percent.format(rate));
        System.out.println("利息:"+currency.format(intrest));
<span style="font-size:18px;">結果:</span>

貸款:¥12,345.32
利率:0.4%
利息:¥49.38

在使用者展示的時候比較方便

比較大小,例如查詢使用者錢包的餘額和這次要支付的錢的大小。

BigDecimal是通過使用compareTo(BigDecimal)來比較的,具體比較情況如下:

public static void main(String[] args) {
    BigDecimal a = new BigDecimal("100");
    BigDecimal b = new BigDecimal("10");
    BigDecimal c = new BigDecimal("10");
    int result1 = a.compareTo(b);
    int result2 = a.compareTo(c);
    int result3 = b.compareTo(c);
<span style="font-size:18px;"></span><pre name="code" class="java">    int result4 = b.compareTo(a);

  System.out.println(result1); System.out.println(result2); System.out.println(result3);
    System.out.println(result4);

 } 結果:

1


0

-1

compareTo左邊大,輸出1,,右邊大輸出-1,相等輸出0

相關推薦

Java BigDemical工作應用主要用於處理

bigDecimal在java.math包下,提供用於執行任意精度小數演算法的類。 BigDecimal 不可變的、任意精度的有符號十進位制數。         java.math.BigDeci

python3__深度學習:TensorFlow__資料的生成與讀取主要針對影象處理

1.CSV檔案(提供影象地址和標籤) 1.1 建立 import os path = "pic" filenames = os.listdir(path=path) strText = "" with open(file="train_list.csv", mode="w") as

smb windows使用的檔案共享協議主要用於與windows互通

主要是samba服務。 SMB協議又成為CIFS(Common Internet File System)協議 samba服務功能: 1檔案共享 2列印共享 3加入windows2000/2003/2008域環境 4通過windows域環境進行認證操作。 在windows使用

基於MVC4+EasyUI的Web開發框架經驗總結6--在頁面應用下拉列表的處理

ica new web開發 don ext images 如果 bob 獲取 http://www.cnblogs.com/wuhuacong/p/3840321.html 在很多Web界面中,我們都可以看到很多下拉列表的元素,有些是固定的,有些是動態的;有些是字典內容,

Java工作如何包裝自己

就業 3年 尚學堂 今天 中一 關於 nbsp 分享 一個   人靠衣裝佛靠金裝,這句古代成語,我們從小聽到大,在面試中我們也經常說,要穿的大方得體,這也是包裝自己的一個方面,那麽在Java找工作中如何具體的包裝自己呢?這是個很有必要討論的話題,今天就跟長沙尚學堂小編一起

百曉生詳解nginxnginx在實際生產環境應用該帖連載更新

2.0 編譯環境 + - apache 80端口 ali oss keep fff 案例一:Nginx+Tomcat負載均衡集群的部署案例概述:京北點指科技有限公司發布V3版移聯建站管理系統,該項目為JAVA語言開發web站點。實驗環境:站點服務器(tomcat1)cent

Java框架-SpringMVC的應用json資料互動、控制器方法返回值、檔案上傳

1. 搭建SpringMVC開發環境 1.1 建立專案,新增依賴 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" x

介面測試系列:工作所用三:__read_config.py檔案

import os from common import fileUtil def __read_config(): base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) settings_file

Java基礎之反射應用如何獲取物件的構造方法、屬性以及、基本方法

反射實戰:新建Student類,利用反射原理輸出Student的構造方法,屬性,普通方法,引數列表等等資訊。 反射資料:查詢java_API之:java.lang.reflect包下。 Student類: package com.briup.ch24; public class St

javaWeb專案Spring、Struts2框架gbk轉gb180整體方案主要用於解決生僻字

一、需要需改點:     1:jsp中指定瀏覽器編碼格式,修改後:<%@ page contentType="text/html; charset=GB18030"%>      2:過濾器:   

C++工作筆記-3種方法對資料型別進行拆分用於各種協議

比如用Long Long存3個數據的內容。 這裡要知道大小端的知識點。 方法一是用位運算; 方法二是用指標; 方法三是結構體(本質上也是指標); 執行截圖如下: 原始碼如下: main.cpp #include <iostream> using

介面測試系列:工作所用六:測試套件

測試套件檔案下的testcase import importlib import sys, time, unittest from gevent import os import os from common import file_util, BSTestRunner from

接口測試系列:工作所用六:測試套件

testcase none util 批量 script desc run 套件 cal 測試套件文件下的testcase import importlib import sys, time, unittest from gevent import os import

介面測試系列:工作所用十:配置檔案的讀寫操作 configparser模組

global_cache.py # -*- codeding: utf-8 -*- import configparser import hashlib import os from common.base import ENV class globalInfo: def get_

Java IO流及應用

IO流 IO流概述及FileWriter類的使用 FileReader類使用 緩衝流介紹和使用 IO流相關案例 NO.one IO流概述及FileWriter類使用   1.1 IO流概述及分類    IO流用來處理裝置之間的資料傳輸  

Myeclipse10安裝Aptana主要用於js和jquery的編輯

Myeclipse10安裝Aptana 在實際專案開發中由於Myeclipse10編輯jsp和js的功能不夠強大,那麼我們需要引入第三方外掛,這樣Aptana外掛就是比較好的選擇,本文詳細介紹在Myeclipse10安裝Aptana外掛的過程和配置方法。

Java代理模式及應用Cglib實現

前一節所說的靜態代理和動態代理模式都是要求目標物件是實現一個介面的目標物件,但是有時候目標物件只是一個單獨的物件,並沒有實現任何的介面,這個時候就可以使用以目標物件子類的方式類實現代理,這種方法就叫做:Cglib代理 1.Cglib說明 Cglib代理,

VLC在web系統應用x-vlc-plugin 即如何把VLC嵌入HTML第一篇

http://blog.csdn.net/vblittleboy/article/details/12706011 VLC毫無疑問是優秀的一款播放軟體,子B/S機構的web專案中,如果能把它嵌入頁面,做頁面預覽或者其他,是非常棒的。 第一步:下載VLC安裝程式;(

JDK1.7升級到1.8版本主要用於ELasticsearch

過程如下: 在Oracle官網下載1.8版本的JDK檔案 jdk-8u121-linux-x64.rpm 然後進行升級 # rpm -qa jdk jdk-1.7.0_80-fcs.x86_6

Java web 工作遇到的一些問題

1、replaceAll()報錯 public class Biaomi { public static void main(String[] args) { String a = "發大(水廢)"; String b = "發大水(作廢),發大水";