精华内容
下载资源
问答
  • 2022-05-05 17:41:11

    目录

    构造BigDecimal

    加减乘除

    加法add

    减法subtract

    乘法multiply

    除法divide

    格式化

    舍入模式

     常用模式四舍五入

    去除结尾多余的0

    去除科学计数法

    结合NumberFormat的一些货币操作

    NumberFormat数字格式化类

    NumberFormat和DecimalFormat

    NumberFormat使用



    为什么要用BigDecimal ?

    商业计算中,货币类或者小数点运算涉及到精度问题,BigDecimal解决高精度问题,保证数值正确。 对比float/double更偏向工程及科学运算,二进制浮点运算,在更广的数值上得到近似计算规律,但是涉及到钱等则需要准确的结果,故使用BigDecimal。

    构造BigDecimal

    BigDecimal(int)、BigDecimal(double)、BigDecimal(long)、BigDecimal(String)

    创建一个整型/双精度/长整型/字符串数字初始值

    一般使用BigDecimal(String)来初始化值,因为BigDecimal(double)无法控制精度

    BigDecimal a = new BigDecimal("0.01");

    加减乘除

    均创建新的对象而非在原来基础上改变数值

    加法add

    BigDecimal a = new BigDecimal("0.01");
    BigDecimal b = new BigDecimal("0.02");
    BigDecimal result = a.add(b);

    减法subtract

    BigDecimal a = new BigDecimal("0.01");
    BigDecimal b = new BigDecimal("0.02");
    BigDecimal result = a.subtract(b); //结果为-0.01

    乘法multiply

    BigDecimal a = new BigDecimal("0.01");
    BigDecimal b = new BigDecimal("0.02");
    BigDecimal result = a.multiply(b);
    

    除法divide

    BigDecimal a = new BigDecimal("0.01");
    BigDecimal b = new BigDecimal("0.02");
    BigDecimal result = a.divide(b);

    当分母为0,报错 java.lang.ArithmeticException: Division by zero

    格式化

    舍入模式

    通过setScale()方法设置保留位数策略

    setScale(n,策略) n表示保留几位小数,策略为以下策略,选择保留位数后的处理方式,如常用的四舍五入。setScale(1)表示保留1位小数,不带策略

    ****************************

    ROUND_UP 向上取整

    ROUND_DOWN 向下取整

    ROUND_HALF_UP  四舍五入 0.25 -》0.3 

    ROUND_HALF_DOWN 五舍六入

    ROUND_FLOOR 负无穷

    ROUND_CEILING 正无穷

    ROUND_HALF_EVEN  银行家舎入法

    ROUND_UNNECESSARY 不需要舎入

     常用模式四舍五入

    BigDecimal a = new BigDecimal("1");
    BigDecimal b = new BigDecimal("0.055");
    BigDecimal c =a.multiply(b).setScale(2,BigDecimal.ROUND_HALF_UP)

    结果为0.06 保留两位采用=四舍五入模式

    去除结尾多余的0

    通过.stripTrailingZeros()可去除为结尾多余的0

    如0.00 -》0,0.660000000000 -》 0.66

    去除科学计数法

    如果计算

    的结果为整数,则BigDecimal会自动转为科学计数法 如

    BigDecimal a = new BigDecimal("6");
    BigDecimal b = new BigDecimal("10.00");
    BigDecimal c =a.multiply(b).setScale(2,BigDecimal.ROUND_HALF_UP).stripTrailingZeros();
    System.out.println(c.toString());

     此时结果为6E+1

     将toString()改为toPlainString()即可正常输出

    结合NumberFormat的一些货币操作

    NumberFormat数字格式化类

    例子

    BigDecimal a = new BigDecimal("0.005");
    //输出格式¥+价格
    NumberFormat curreny  = NumberFormat.getCurrencyInstance();
    //输出格式 百分比%
    NumberFormat percent  = NumberFormat.getPercentInstance();
    //设置百分比小数点最多保留3位
    percent.setMaximumFractionDigits(3);
    System.out.println(curreny.format(a) + " " + percent.format(a));
    //输出 ¥0.00 0.5%
    

    curreny 为货币格式,此时0.001输出为0元,若0.015则或输出0.02(满足保留2位四舍五入)

    percent 为百分比格式 percent.setMaximumFractionDigits(n)设置转换为百分比小数点向右移动n-1位置

    如,设置n为3,则转换会将小数点向右移动2位置,如0.00005 -》 0.005%、0.5 -》50%

    但当小数为6位数后如0.000005,都将转换为0%

    NumberFormat和DecimalFormat

    注意点:

    两者均为线程不安全的类,多线程操作需要注意,可使用ThreadLocal为每个线程生成一个本地实例或者使用synchronized来进行同步。

    区别:

    NumberFormat和DecimalFormat数字相关格式
    DateFormat和SimpleDateFormat也文字日期相关格式

    四者均为Format子类。DecimalFormat为NumberFormat子类,用于处理十进制数字格式

    NumberFormat使用

    获得实例

    Locale.getDefault() 表示使用系统默认地区

    NumberFormat integerNumber = NumberFormat.getIntegerInstance(Locale.getDefault());

    常用实例构造方法

    getInstance、getNumberInstance 数字格式

    getIntegerInstance整数格式

    getCurrencyInstance货币格式

    getPercentInstance百分比的格式

    更多相关内容
  • 会计是用于货币和货币格式设置的库。 (受启发) 快速开始 go get github.com/leekchan/accounting example.go package main import ( "fmt" "math/big" "github.com/shopspring/decimal" "github....
  • 在使用NPOI导出EXCEL时,设置了单元格格式为货币格式,但是导出来的数据格式还是为通用格式, 求解!!! 格式代码: ICell cell = contentRow.CreateCell(2); //cell.SetCellValue((double)result....
  • Vue货币输入插件可轻松输入货币格式的数字。 它提供了一个独立的组件( <currency> )和一个自定义Vue指令( v-currency ),用于使用货币格式功能来装饰现有的输入组件。 特征 和零依赖关系 键入时格式化 基于语言...
  • Excel2021中设置货币数字格式.docx
  • 一个 AngularJs 模块,用于将输入字段屏蔽为货币格式。 您应该能够输入输入,它始终将字符串格式化为货币格式。 该模块使用 AngularJs $locale 服务来确保它适用于所有货币。 ##演示 初始值设置为负数并采用...
  • java格式化数值成货币格式示例格式化一个数值,比如123456789.123,希望显示成"$123,456,789.123".要完成需求,可以用java.text.NumberFormat类来进行格式化NumberFormat类提供了对数值格式的封装。在JDK中,一般使用...

    java格式化数值成货币格式示例

    格式化一个数值,比如123456789.123,希望显示成"$123,456,789.123".要完成需求,可以用java.text.NumberFormat类来进行格式化

    NumberFormat类提供了对数值格式的封装。在JDK中,一般使用NumberFormt的子类----java.text.DecimalFormat完成这个功能。该类最常见的构造函数为:

    public DecimalFormat(String pattern)

    其中,参数pattern表示传入的格式字符串

    代码:

    复制代码 代码如下:

    import java.text.DecimalFormat;

    import java.text.NumberFormat;

    public class numberFormat

    {

    public static void main(String[] args)

    {

    NumberFormat nf = new DecimalFormat("$,###.##");

    String testStr = nf.format(123456789.123);

    System.out.println(testStr);

    }

    }

    DecimalFormat特点:

    接受相应的格式字符串,将数值中的各个部分格式化显示。#表示阿拉伯数字

    在格式字符串中,除了具有代表意义的部分之外,其他部分如$都原样出现

    时间: 2014-04-11

    6b5aa0751a6f1e6a9d0b665a02cc1f46.gif

    数字可以标志货币.百分比.积分和电话号码等,就货币而言,在不同的国家会以不同的格式来定义,本实例将接收用户输入的数字,然后在控制台中输出其货币格式,其中使用了不同国家的货币格式. 思路如下:使用NumberFormat类的getCurrencyInstance()方法,通过不同的参数创建不同的对象,对该对象使用format()方法,方法参数即为用户输入的数字. 代码如下: 复制代码 代码如下: import java.text.NumberFormat;import java.util.Loca

    d2513795678640ce8862a2740036e68d.png

    目前整理出来三种形式: 可根据实际需要选择使用 String userNameUrl; int beginIndex = 0; int endIndex = 0; userNameUrl = "454512@hongri@4944115455d9591b274648a06303d910de"; /** * 方法一: */ beginIndex = userNameUrl.indexOf("@")+1; endIndex = userNameUrl.lastIndex

    package file; import java.io.File; /** * 输出某个文件夹下所有某个格式的文件 * @author hasee * */ public class Demo2 { public static void main(String[] args) { getTxtName("d:/a",".jpg"); } public static void getTxtName(String path,String suffix) { //判断文

    使用java文件过滤器输出制定格式文件路径的实例代码如下所示: 一.使用输出路径判断过滤 import java.io.File; public class demo_file04 { public static void main(String[] args) { fileall(new File("D:\\coding")); } private static void fileall(File f1) { // System.out.println(f1); //判断文件是否是目

    上代码: 环境:Python3 import random,string s=string.ascii_letters+string.digits print(s) n={''.join(random.choices(s,k=8)) for I in range(60000)} print(len(n)) with open('a.csv','w') as f: for i in n: f.write(i+'\n') 运行代码,生成a.csv文件并保存. n的类型为set集合类型,实现自动去重.

    一.基本数据类型 java的数据类型可以分为两大类:基本类型和复合类型. 基本类型:整型(int,short,long,byte).浮点型(float,double).布尔型(boolean).和字符型(char) 复合类型:数组,类,接口 1.整型 各种整型数据所占空间及数的范围 数据类型 所占内存空间/位 数的范围 byte 8 -128~127 short 16 -32768~32767 int 32 -2^31~2^31-1 long 64 -2^63~2^63-1 整型以补码的形式存放

    java 数值类型分秒时间格式化的实例代码 java 实例代码: import java.util.concurrent.TimeUnit; public class DateUtils { private static final String[] UNIT_DESC = new String[]{"天", "小时", "分钟", "秒"}; /** * 格式化持续时间
    * 将持续时间,格式化为 xx天

    d328022b32f8a30a7946503416aa90d1.png

    在没介绍正文之前,先给大家介绍下websocket的背景和原理: 背景 在浏览器中通过http仅能实现单向的通信,comet可以一定程度上模拟双向通信,但效率较低,并需要服务器有较好的支持; flash中的socket和xmlsocket可以实现真正的双向通信,通过 flex ajax bridge,可以在javascript中使用这两项功能. 可以预见,如果websocket一旦在浏览器中得到实现,将会替代上面两项技术,得到广泛的使用.面对这种状况,HTML5定义了WebSocket协议,能更

    cbfb8d361b93e6fae6fff9c1403b71d2.png

    第一步:找别人提供的接口,比如在这里我选择的是聚合数据提供的接口 第二步:要申请相应的AppKey方可使用,此参数会作为接口的参数调用. 第三步:调用别人提供的接口方法 代码如下: package juheapi.nba; /** * Created by Administrator on 2017/11/19/019. */ import net.sf.json.JSONObject; import java.io.*; import java.net.HttpURLConnection; i

    编程中经常有用到MD5加密的情况,Java语言并没有像PHP一样提供原生的MD5加密字符串的函数,需要MD5加密的时候,往往需要自己写. 代码如下: import java.security.MessageDigest; public class MD5 { //公盐 private static final String PUBLIC_SALT = "demo" ; //十六进制下数字到字符的映射数组 private final static String[] hexDigits =

    展开全文
  • Java POI 生成Excel时显示货币格式
  • HSSFCellStyle currencyDecimalStyle = wb.createCellStyle(); HSSFDataFormat format = wb.createDataFormat(); currencyDecimalStyle.setDataFormat(format.getFormat("_(\"HKD\"* #,##0.00_);...
    HSSFCellStyle currencyDecimalStyle = wb.createCellStyle();
    		HSSFDataFormat format = wb.createDataFormat();
    		currencyDecimalStyle.setDataFormat(format.getFormat("_(\"HKD\"* #,##0.00_);_(\"HKD\"* (#,##0.00);_(\"HKD\"* \"-\"??_);_(@_)"));
    		currencyDecimalStyle.setFont(bodyFont);
    		currencyDecimalStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    
    
    writeAmountData(row, (short) 3, totalAmountByPayitemKey, currencyDecimalStyle);
    
    public void writeAmountData(HSSFRow row, short cellnum, Object value, HSSFCellStyle cellStyle) {
    		Double amount = new Double(value.toString());
    		double amountDouble = amount.doubleValue();
    		if (amountDouble < 0) {
    			amountDouble = amountDouble * -1;
    		}
    
    		HSSFCell cell = row.createCell(cellnum);
    		cell.setCellValue(amountDouble);
    		cell.setCellStyle(cellStyle);
    		cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
    	}

    下载excel效果图:

    展开全文
  • cryptoformat还通过将工作推迟到浏览器的来尝试处理不同的语言环境和货币格式。 如果Intl.NumberFormat不是由浏览器支持的, cryptoformat提供货币显示一个原始回退。 安装 npm i @coingecko/cryptoformat 用法 ...
  • 可以帮助用户制作各种复杂的表格文档,进行繁琐的数据计算,并能对输入的数据进行各种复杂统计运算后显示可视性极佳的表格,同时它还能形象地将大量枯燥无味的数据变为多种漂亮的彩色商业图表显示出来,极大地增强...
  • 如果设置为 TRUE 那么两位小数将显示所有值的 % 位置,包括% 整数值。 默认真。 % % - 'showParens' : 许多会计方法使用括号来表示% 负货币数量。 这个布尔标志% 决定是否用括号来表示% 负值(例如负 $13 显示...
  • currencyFormatter.js是一款简单实用的纯js格式货币插件。该插件包含155种不同国家的货币,以及715种不同语言的本地化设置。它还能处理某些不采用的货币,功能非常强大。
  • 输入框货币格式 用法示例 <input type="text" id="price" name="price" value="1234.56"> $('#price').quickMoneyEdit(); 获取/设置 //Set $('#price').val('1234.56'); $('#price').val('$1,234.56'); //...
  • 什么不使用Laravel的货币格式和转换包。 该软件包旨在Laravel项目提供一种简便而功能强大的格式来格式化和转换货币值的工具。 什么不使用moneyphp包? 因为moneyphp使用intl扩展名进行数字格式设置。 默认情况...
  • 我有excel测试应用程序,将货币格式化为2位小数,逗号千位分隔符 . 下面是在Excel文件上写入数据的控制台应用程序 .确保您引用了Microsoft.Office.Interop.Excel dllusing System.Collections.Generic;using ...

    这个对我有用 . 我有excel测试应用程序,将货币格式化为2位小数,逗号为千位分隔符 . 下面是在Excel文件上写入数据的控制台应用程序 .

    确保您引用了Microsoft.Office.Interop.Excel dll

    using System.Collections.Generic;

    using Excel = Microsoft.Office.Interop.Excel;

    namespace ConsoleApplication2

    {

    class Program

    {

    static void Main(string[] args)

    {

    var bankAccounts = new List {

    new Account { ID = 345678, Balance = 541.27},

    new Account {ID = 1230221,Balance = -1237.44},

    new Account {ID = 346777,Balance = 3532574},

    new Account {ID = 235788,Balance = 1500.033333}

    };

    DisplayInExcel(bankAccounts);

    }

    static void DisplayInExcel(IEnumerable accounts)

    {

    var excelApp = new Excel.Application { Visible = true };

    excelApp.Workbooks.Add();

    Excel._Worksheet workSheet = (Excel.Worksheet)excelApp.ActiveSheet;

    workSheet.Cells[1, "A"] = "ID Number";

    workSheet.Cells[1, "B"] = "Current Balance";

    var row = 1;

    foreach (var acct in accounts)

    {

    row++;

    workSheet.Cells[row, "A"] = acct.ID;

    workSheet.Cells[row, "B"] = acct.Balance;

    }

    workSheet.Range["B2", "B" + row].NumberFormat = "#,###.00 €";

    workSheet.Columns[1].AutoFit();

    workSheet.Columns[2].AutoFit();

    }

    }

    public class Account

    {

    public int ID { get; set; }

    public double Balance { get; set; }

    }

    }

    输出

    XNk9v.png

    展开全文
  • Laravel的货币格式和转换包 该软件包旨在Laravel项目提供一种简便而功能强大的格式来格式化和转换货币值的工具。 什么不使用moneyphp包? 因为moneyphp使用intl扩展名进行数字格式设置。 默认情况下, intl...
  • HTML货币格式设置:使用模拟购买的烹饪设备,展示将货币格式和计算应用于订单总额,以及通过信用卡购买进行表格验证
  • js货币格式

    千次阅读 2018-10-29 14:53:41
    我们都知道当显示价格时都会有一个格式比如:¥666,66.00或者是 $666,66.00 在网上可以搜到好多种方法,我这里就做下笔记,以免以后用到,下面附上代码: function formatMoney (number, places, symbol, thousand...
  • python-currencies:显示货币格式以及它的数值
  • XSSFDataFormat format = wb.createDataFormat...如果getFormat()里参数“0”或者“0.00”,均显示自定义格式,不显示数值类型。 采用上面的代码则总是显示货币类型。网上查了很多资料都没有解决。不知道是什么问题。
  • 第一种:日期格式  cell.setCellValue(new Date(2008,5,5));  //set date format  HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();  HSSFDataFormat format= demoW...
  • 在开发SAP Smartforms 时,会遇到 设置打印的货币字段或数量字段在打印预览时无法显示报错,及数量字段在打印预览时偏下方显示的格式问题,下面将给大家带来解决方法。 1.在打印程序外创建含有行项目QUAN 数量字段...
  • currencyFormatter.js是一款简单实用的纯js格式货币插件。该插件包含155种不同国家的货币,以及715种不同语言的本地化设置。它还能处理某些不采用的货币,功能非常强大。
  • Vue货币输入Vue货币输入插件可轻松输入货币格式的数字。...具有微小的捆绑包大小和零依赖关系键入时的格式基于Intl.NumberFormat的区域设置依赖于ISO的货币格式(免干扰)(将格式隐藏在焦点上以便于输入)
  • 货币根据货币符号匹配格式 货币符号的条件格式 (Conditional Formatting for Currency Symbol) If you sell products in several countries, you might want to show the prices in different currencies....
  • --SQL 格式货币形式输出 select '¥' + convert(nvarchar,cast('12434545.9462' as money),1); --SQL 格式化千分位输入 + 小数 select reverse(stuff(reverse(convert(varchar,convert(money,123456789),1)),1,3,...
  • 我想在excel中显示货币格式为CNY 1,234.00,试过很多办法,总是不行 java 操作 jxl设置货币格式不正确 jxl.write.NumberFormat nf = new jxl.write.NumberFormat("[$USD]\\ #,##0.00;[$USD]\\ \\-#,##0.00"); 这种...
  • currencyFormatter.js是一款简单实用的纯js格式货币插件。该插件包含155种不同国家的货币,以及715种不同语言的本地化设置。它还能处理某些不采用的货币,功能非常强大。
  • money2Text 是一个小型 JavaScript 库,可将(整数或十进制)数字转换为货币文本格式设置 CDN < script src =" https://unpkg.com/money2text " > </ script > NPM npm i money2text 用 在浏览器...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,997
精华内容 14,798
关键字:

如何设置为货币格式