当前位置:首页 » 数字币问答 » java货币数字的精确处理

java货币数字的精确处理

发布时间: 2021-07-17 11:39:25

A. JAVA中如何精确进行大数计算

使用Java.math包中的 BigInteger, BigDecimal这两个类。 这两个类可以处理包含任意长度数字序列的数值。BigInteger类实现任意精度的整数运算,BigDicimal实现任意精度的浮点数运算。 语出Core Java

B. 在java里,如何将double类型的数字转换成货币那种形式,数字是用逗号分开的那种

Format fm1=new DecimalFormat("#,###.00");
double num1=12345.678;
fm1.format(num1);
可以自己在程序里试试哈。

C. java开发中,一般涉及到金钱计算的时候用什么数据类型

  • 回答: 一般使用 java.math.BigDecimal 类来处理需要高精度的计算

  • 原因: 1.浮点数(double,flot)因为精度问题, 容易出现不精确的计算结果

    2.浮点数范围比较小

    BigDecimal 范围大, 并且比他们精确

  • 参考代码

importjava.math.BigDecimal;

publicclassDemo{
publicstaticvoidmain(String[]args){
//浮点数,存在精度问题
doubled1=0.19*6;
System.out.println(d1);//1.1400000000000001
//采用BigDecimal来解决精度问题
BigDecimalbd1=newBigDecimal("0.19");
BigDecimalbd2=newBigDecimal("6");
BigDecimalbd3=bd1.multiply(bd2);
System.out.println(bd3);//1.14
}
}

输出

1.1400000000000001
1.14

D. 在java中怎么对一个数字取整

在java中对一个数字取整方法很多

  1. 向上取整Math.ceil();

举例:Math.ceil(11.4)=12; Math.ceil(-11.6)=-11;

2.向下取整Math.floor();

举例:Math.floor(11.7)=11;Math.floor(-11.2)=-12;

3.四舍五入Math.round();

顾名思义,四舍五入后取整,其算法为Math.round(x+0.5),即原来的数字加上0.5后再想下取整即可。

举例:Math.round(11.5)=12;

Math.round(-11.5)=-11;

E. java如何进行精确运算

/*
* 看程序写结果:结果和我们想的有一点点不一样,这是因为float类型的数据存储和整数不一样导致的。它们大部分的时候,都是带有有效数字位。
*
* 由于在运算的时候,float类型和double很容易丢失精度,演示案例。所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal
*
* BigDecimal类:不可变的、任意精度的有符号十进制数,可以解决数据丢失问题。
*/

import java.math.BigDecimal;

/*
* 构造方法:
* public BigDecimal(String val)
*
* public BigDecimal add(BigDecimal augend)
* public BigDecimal subtract(BigDecimal subtrahend)
* public BigDecimal multiply(BigDecimal multiplicand)
* public BigDecimal divide(BigDecimal divisor)
* public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode):商,几位小数,如何舍取
*/
public class BigDecimalDemo {
public static void main(String[] args) {
// System.out.println(0.09 + 0.01);
// System.out.println(1.0 - 0.32);
// System.out.println(1.015 * 100);
// System.out.println(1.301 / 100);

BigDecimal bd1 = new BigDecimal("0.09");
BigDecimal bd2 = new BigDecimal("0.01");
System.out.println("add:" + bd1.add(bd2));
System.out.println("-------------------");

BigDecimal bd3 = new BigDecimal("1.0");
BigDecimal bd4 = new BigDecimal("0.32");
System.out.println("subtract:" + bd3.subtract(bd4));
System.out.println("-------------------");

BigDecimal bd5 = new BigDecimal("1.015");
BigDecimal bd6 = new BigDecimal("100");
System.out.println("multiply:" + bd5.multiply(bd6));
System.out.println("-------------------");

BigDecimal bd7 = new BigDecimal("1.301");
BigDecimal bd8 = new BigDecimal("100");
System.out.println("divide:" + bd7.divide(bd8));
System.out.println("divide:"
+ bd7.divide(bd8, 3, BigDecimal.ROUND_HALF_UP));
System.out.println("divide:"
+ bd7.divide(bd8, 8, BigDecimal.ROUND_HALF_UP));
}
}

F. java怎么输出货币符号

java输出货比符号测试方法:
importjava.text.NumberFormat;

importjava.util.Locale;

publicclassFormatTest{

publicstaticvoidmain(Stringargs[]){

//不使用格式化输出数

doubled=10.0/3.0;

System.out.println("无格式化输出:"+d);

//使用本地默认格式输出数

NumberFormatnumberFormat=NumberFormat.getNumberInstance();

//numberFormat.setMaximumFractionDigits(4);

//numberFormat.setMinimumIntegerDigits(6);

StringnumberString=numberFormat.format(d);

System.out.println("本地默认格式输出数:"+numberString);

//使用本地默认格式输出货币值

NumberFormatcurrencyFormat=NumberFormat.getCurrencyInstance();

System.out.println("本地默认格式输出货币值:"+currencyFormat.format(d));

//使用本地默认格式输出百分数

NumberFormatpercentFormat=NumberFormat.getPercentInstance();

System.out.println("本地默认格式输出百分数:"+percentFormat.format(d));

//在不同的国家和地区数字表示的格式也有区别。如德国

//使用德国的格式化输出数

NumberFormatnumberFormatG=NumberFormat

.getNumberInstance(Locale.GERMANY);

System.out.println("德国数字输出形式:"+numberFormatG.format(d));

//使用德国货币输出形式

NumberFormatcurrencyFormatG=NumberFormat

.getCurrencyInstance(Locale.GERMANY);

System.out.println("德国货币输出形式:"+currencyFormatG.format(d));

//使用美国货币输出形式

NumberFormatcurrencyFormatA=NumberFormat

.getCurrencyInstance(Locale.US);

System.out.println("美国货币输出形式:"+currencyFormatA.format(d));

//使用德国百分数输出形式

NumberFormatpercentFormatG=NumberFormat

.getPercentInstance(Locale.GERMANY);

System.out.println("德国百分数输出形式:"+percentFormatG.format(d));

System.exit(0);

}

}

G. 请问java怎么提取一个字符串中的数字(含小数点)。例如:金额为12345.78 ,结果为12345.78

public static void main(String[] args)
{
String a = "a1v2.3s5";
char[] b = a.toCharArray();
String result = "";
for (int i = 0; i < b.length; i++)
{
if (("0123456789.").indexOf(b[i] + "") != -1)
{
result += b[i];
}
}
System.out.println(result);
}
把字母替换成汉字一样的。
public static void main(String[] args)
{
String a = "金额为12.35";
char[] b = a.toCharArray();
String result = "";
for (int i = 0; i < b.length; i++)
{
if (("0123456789.").indexOf(b[i] + "") != -1)
{
result += b[i];
}
}
System.out.println(result);
}

H. JAVA计算时实现数字计算结果高精度

这个程序满足你的要求吧

public class BigNumber {
public static int[] add(int[] a, int[] b) {
int carry = 0;
int[] c = new int[a.length];
for(int i = a.length - 1; i >= 0; i--) {
c[i] = a[i] + b[i] + carry;
if(c[i] < 10000)
carry = 0;
else { // 进位

c[i] = c[i] - 10000;
carry = 1;
}
}
return c;
}
public static int[] sub(int[] a, int[] b) {
int borrow = 0;
int[] c = new int[a.length];
for(int i = a.length - 1; i >= 0; i--) {
c[i] = a[i] - b[i] - borrow;
if(c[i] >= 0)
borrow = 0;
else { // 借位
c[i] = c[i] + 10000;
borrow = 1;
}
}
return c;
}
public static int[] mul(int[] a, int b) { // b 为乘数
int carry = 0;
int[] c = new int[a.length];
for(int i = a.length - 1; i >=0; i--) {
int tmp = a[i] * b + carry;
c[i] = tmp % 10000;
carry = tmp / 10000;
}
return c;
}
public static int[] div(int[] a, int b) { // b 为除数
int remain = 0;
int[] c = new int[a.length];
for(int i = 0; i < a.length; i++) {
int tmp = a[i] + remain;
c[i] = tmp / b;
remain = (tmp % b) * 10000;
}
return c;
}
public static void main(String[] args) {
int[] a = {1234, 5678, 9910, 1923, 1124};
int[] b = {1234, 5678, 9910, 1923, 1124};
int[] c = BigNumber.add(a, b);
for(int i = 0; i < c.length; i++) {
System.out.print(c[i]);
}
System.out.println();
}
}

I. 在java中怎么对一个数字取整

public class EXC {
public static void main(String[] args) {
//如果是将 一个 float或double类型的小数 转换为整数 如下:
//利用java的强制类型转换规则
double d = 12.3;
int i = (int)d;
System.out.println(i);

//如果是将一个表示小数的 字符串转换为整数 如下:
//利用Integer包装类
String s = "12.3";// 或12.3f
i = Integer.parseInt(s.split("\\.")[0]);
System.out.println(i);

}
}

J. Java 将数字格式化为货币字符窜。。。下面这个程序应该怎么改!求高手!!

这里不对:Number number=new Number(System.in);

Number是一个抽象类,不能被实例化的 。

还有,就没有NumberFormat.FULL这个属性

热点内容
汇款查询的两个区块链交易id相同 发布:2025-06-27 18:45:04 浏览:270
poco区块链矿机挖币是骗局 发布:2025-06-27 18:33:06 浏览:971
usdt售卖 发布:2025-06-27 18:29:40 浏览:332
有币领比特币app 发布:2025-06-27 18:21:33 浏览:397
大白话解释区块链 发布:2025-06-27 18:12:30 浏览:835
100trx币是多少钱 发布:2025-06-27 18:03:15 浏览:287
币圈ipo是什么 发布:2025-06-27 17:48:46 浏览:959
比特股币总量 发布:2025-06-27 17:39:55 浏览:252
哈希顿区块链几时上市 发布:2025-06-27 17:38:03 浏览:929
trx4改6轮 发布:2025-06-27 17:28:50 浏览:25