bigdecimal的加减乘除,bigdecimal加减乘除有哪些?
bigdecimal的加减乘除,bigdecimal加减乘除有哪些?详细介绍
本文目录一览: bigdecimal加减乘除是什么?
1、// 加
(1)BigDecimal add = ma.add(mb)
(2)System.out.println("加法:"+add)
2、// 减
(1)BigDecimal sub = ma.subtract(mb)
(2)System.out.println("减法:"+sub)
3、// 乘
(1)BigDecimal mul = mb.multiply(md)
(2)System.out.println("乘法:"+mul)
4、// 除
(1)BigDecimal div = mb.divide(md)
(2)System.out.println("除法:"+div)
BigDecimal其他情况简介。
使用BigDecimal类构造方法传入double类型时,计算的结果也是不精确的。因为不是所有的浮点数都能够被精确的表示成一个double 类型值,有些浮点数值不能够被精确的表示成 double 类型值,因此它会被表示成与它最接近的 double 类型的值。必须改用传入String的构造方法。这一点在BigDecimal类的构造方法注释中有说明。
BigDecimal向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。如果舍弃部分左边的数字为奇数,则舍入行为与 ROUND_HALF_UP 相同。
bigdecimal加减乘除有哪些?
//BigDecimal add = ma.add(mb),System.out.println("加法:"+add)。BigDecimal sub =ma.subtract(mb),System.out.println("减法:"+sub)。
使用BigDecimal要用String来够造,要做一个加法运算,需要先将两个浮点数转为String,然后够造成BigDecimal,在其中一个上调用add方法,传入另一个作为参数,然后把运算的结果(BigDecimal)再转换为浮点数。
需要注意的是除法运算divide:
BigDecimal除法可能出现不能整除的情况,比如 4.5/1.3,这时会报错java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result。
其实divide方法有可以传三个参数:public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) 第一参数表示除数, 第二个参数表示小数点后保留位数,第三个参数表示舍入模式,只有在作除法运算或四舍五入时才用到舍入模式。
java中bigdecimal类型的变量如何相互加减乘除?
1、// 加;
1)BigDecimal add = ma.add(mb);
2)System.out.println("加法:"+add);
2、// 减;
1)BigDecimal sub = ma.subtract(mb);
2)System.out.println("减法:"+sub);
3、// 乘;
1)BigDecimal mul = mb.multiply(md);
2)System.out.println("乘法:"+mul);
4、// 除
1)BigDecimal div = mb.divide(md);
2)System.out.println("除法:"+div);
3)System.out.println("===================");
4)mc = mc.setScale(2, BigDecimal.ROUND_HALF_UP);
5)System.out.println("四舍五入:"+mc);
6)System.out.println("===================");
7)mc = mc.negate();
8)System.out.println("负数:"+mc);
9)System.out.println("===================");
java中bigdecimal 类型的变量怎么相互加减乘除
1、// 加;
1)BigDecimal add = ma.add(mb);
2)System.out.println("加法:"+add);
2、// 减;
1)BigDecimal sub = ma.subtract(mb);
2)System.out.println("减法:"+sub);
3、// 乘;
1)BigDecimal mul = mb.multiply(md);
2)System.out.println("乘法:"+mul);
4、// 除
1)BigDecimal div = mb.divide(md);
2)System.out.println("除法:"+div);
3)System.out.println("===================");
4)mc = mc.setScale(2, BigDecimal.ROUND_HALF_UP);
5)System.out.println("四舍五入:"+mc);
6)System.out.println("===================");
7)mc = mc.negate();
8)System.out.println("负数:"+mc);
9)System.out.println("===================");
如图
import java.math.BigDecimal;public class Test { public static void main(String[] args) { // BigDecimal是处理double精度问题的对象 BigDecimal b1 = new BigDecimal("10"); BigDecimal b2 = new BigDecimal("10"); // 结果 BigDecimal result = null; // 加 result = b1.add(b2); System.out.println(result.doubleValue()); // 减 result = b1.subtract(b2); System.out.println(result.doubleValue()); // 乘 result = b1.multiply(b2); System.out.println(result.doubleValue()); // 除 result = b1.divide(b2); System.out.println(result.doubleValue()); }}20.00.0100.01.0
如何利用Java中的BigDecimal实现加减乘除功能
仅做参考:
import java.math.BigDecimal; /** * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 * 确的浮点数运算,包括加减乘除和四舍五入。 */ public class Arith{ //默认除法运算精度 private static final int DEF_DIV_SCALE = 10; //这个类不能实例化 private Arith(){ } /** * 提供精确的加法运算。 * @param v1 被加数 * @param v2 加数 * @return 两个参数的和 */ public static double add(double v1,double v2){ BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.add(b2).doubleValue(); } /** * 提供精确的减法运算。 * @param v1 被减数 * @param v2 减数 * @return 两个参数的差 */ public static double sub(double v1,double v2){ BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.subtract(b2).doubleValue(); } /** * 提供精确的乘法运算。 * @param v1 被乘数 * @param v2 乘数 * @return 两个参数的积 */ public static double mul(double v1,double v2){ BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.multiply(b2).doubleValue(); } /** * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 * 小数点以后10位,以后的数字四舍五入。 * @param v1 被除数 * @param v2 除数 * @return 两个参数的商 */ public static double div(double v1,double v2){ return div(v1,v2,DEF_DIV_SCALE); } /** * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 * 定精度,以后的数字四舍五入。 * @param v1 被除数 * @param v2 除数 * @param scale 表示表示需要精确到小数点以后几位。 * @return 两个参数的商 */ public static double div(double v1,double v2,int scale){ if(scale<0){ throw new IllegalArgumentException( "The scale must be a positive integer or zero"); } BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 提供精确的小数位四舍五入处理。 * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */ public static double round(double v,int scale){ if(scale<0){ throw new IllegalArgumentException("The scale must be a positive integer or zero"); } BigDecimal b = new BigDecimal(Double.toString(v)); BigDecimal one = new BigDecimal("1"); return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); } };
关于BigDecimal 中的加减乘除 小数的问题?
java.math.BigDecimal。BigDecimal一共有4个够造方法,让我先来看看其中的两种用法:
第一种:BigDecimal(double val)
Translates a double into a BigDecimal.
第二种:BigDecimal(String val)
Translates the String repre sentation of a BigDecimal into a BigDecimal.
使用BigDecimal要用String来够造,要做一个加法运算,需要先将两个浮点数转为String,然后够造成BigDecimal,在其中一个上调用add方法,传入另一个作为参数,然后把运算的结果(BigDecimal)再转换为浮点数。
public static double add(double v1,double v2)
public static double sub(double v1,double v2)
public static double mul(double v1,double v2)
public static double div(double v1,double v2)
public static double div(double v1,double v2,int scale)
public static double round(double v,int scale)
java加减乘除是什么类
准确的说java没有这个类,你要加减乘除的话直接写就行了如:
System.out.println("1+1="+(1+1));
System.out.println("1-1="+(1-1));
System.out.println("1/1="+(1/1));
System.out.println("1*1="+(1*1));
都可以正确输出结果
运算符并不是一个类,所有的编程语言和计算机的沟通都是通过二进制来进行的,编程语言会把你写的东西转成汇编语言,+就是汇编中的add,*无符号数乘法 MUL,带符号数乘法 IMUL。-就是sub,/就是div。
在往下的,我就不懂了/。
你想问的是计算金额经常用到的BigDecimal类吗?
这个类有自己的加(add)减(subtract)乘(multiply)除(divide)方法。
java.lang.Math
java 中准确没有这个类,你要算数的话你试试如下:
system.out.println("1+1="1+1);
java中实现加减乘除的类是java.math.BigDecimal类. BigDecimal 类提供以下操作:算术、标度操作、舍入、比较、哈希算法和格式转换。
加法运算:调用BigDecimal类的add方法即可
BigDecimal b1 = new BigDecimal("1");BigDecimal b2 = new BigDecimal("2");BigDecimal result = b1.add(b2);//加法System.out.println(result);减法运算:调用BigDecimal类的subtract方法即可
BigDecimal b1 = new BigDecimal(3.2);BigDecimal b2 = new BigDecimal(1.6);BigDecimal result = b1.subtract(b2);//减法System.out.println(result);乘法运算:调用BigDecimal类的multiply方法即可
BigDecimal b1 = new BigDecimal(9);BigDecimal b2 = new BigDecimal(8.2);BigDecimal result = b1.multiply(b2);//乘法System.out.println(result);除法运算:调用BigDecimal类的divide方法即可。
注意: 除法运算存在除不尽的情况,比如1.0/3=0.333333.. 我们需要指定小数点后面的长度,以及有效的舍入模式(例如四舍五入模式).
BigDecimal b1 = new BigDecimal("1");BigDecimal b2 = new BigDecimal("3");int scale = 5;//scale 指定小数点后面的位数为5位double result = b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();// 除法// BigDecimal.ROUND_HALF_UP 表示四舍五入System.out.println(result);备注:
1:BigDecimal的构造参数有很多,但浮点类型建议转换成字符串类型, 避免精度的丢失.
double d1 =0.001;//浮点类型String s1 = Double.toString(d1);//转成字符串BigDecimal b1 = new BigDecimal(s1);//使用字符串作为构造参数2:BigDecimal类, 内存占用比基本类型多,并且为了计算的精度,速度比double慢一点.所以,只有在需要精确计算的情况下,才使用BigDecimal类进行. 普通运算,还是多使用+-*/运算符,位运算符等.
java简单加减乘除
字符串,不可以使用==比较 ,使用 "+".equals(B) 比较
if(B=="+")改成if(B.equals("+"))
使用BigDecimal并且一定要用String来够造。
实现方法如下:
import java.math.BigDecimal;
/**
* 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精
* 确的浮点数运算,包括加减乘除和四舍五入。
*/
public class Arith{
//默认除法运算精度
private static final int DEF_DIV_SCALE = 10;
//这个类不能实例化
private Arith(){
}
/**
* 提供精确的加法运算。
* @param v1 被加数
* @param v2 加数
* @return 两个参数的和
*/
public static double add(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2).doubleValue();
}
/**
* 提供精确的减法运算。
* @param v1 被减数
* @param v2 减数
* @return 两个参数的差
*/
public static double sub(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}
/**
* 提供精确的乘法运算。
* @param v1 被乘数
* @param v2 乘数
* @return 两个参数的积
*/
public static double mul(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
}
/**
* 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
* 小数点以后10位,以后的数字四舍五入。
* @param v1 被除数
* @param v2 除数
* @return 两个参数的商
*/
public static double div(double v1,double v2){
return div(v1,v2,DEF_DIV_SCALE);
}
/**
* 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
* 定精度,以后的数字四舍五入。
* @param v1 被除数
* @param v2 除数
* @param scale 表示表示需要精确到小数点以后几位。
* @return 两个参数的商
*/
public static double div(double v1,double v2,int scale){
if(scale<0){
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 提供精确的小数位四舍五入处理。
* @param v 需要四舍五入的数字
* @param scale 小数点后保留几位
* @return 四舍五入后的结果
*/
public static double round(double v,int scale){
if(scale<0){
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
};
分享
本回答由电脑网络分类达人 高德宝认证
其他类似问题
2009-02-08加减乘除运算(Java)14
2010-06-22Java实现有界面的简单的两个整数之间的加减乘除运算
2009-09-21myeclipse中java的加减乘除运算1
2011-05-27用java编写计算器,,,要求加减乘除等运算。。。1
2011-09-15java中的String型怎么实现数学的加减乘除运算?10
更多关于java简单加减乘除的问题>>
为您推荐:
举报| 2009-02-24 03:00
#为什么很多走失的孩子无法找回?#
提问者采纳
import java.util.Scanner;
class MakeOperation
{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
Count count=new Count();
System.out.print("请输入你要运算的第一个数:");
count.one=input.next();
System.out.print("请输入你要进行运算的运算符:");
count.fu=input.next();
System.out.print("请输入你要运算的第二个数:");
count.two=input.next();
if(count.fu.equals("+")){
count.outcome=Float.parseFloat(count.one)+Float.parseFloat(count.two)+"";
// 将字符串解析为数字,注意下如果输入的不是数字程序会报错,缺少健壮性代码 }
System.out.println(count);
}
}
class Count{
String one;
String two;
String fu;
String outcome; // 结果
public String toString(){
return one+fu+two+"="+outcome;
}
}
下面的代码修改了Count类里域的部分参数,增加了一个用于检查输入是否正确的类。
import java.util.Scanner;
class MakeOperation
{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
Count count=new Count();
CheckOperation checkOpera=new CheckOperation();
System.out.print("请输入你要运算的第一个数:");
count.one=checkOpera.checkNum(input);
System.out.print("请输入你要进行运算的运算符:");
String[] operators={"+","-","*","/"};
count.fu=checkOpera.checkOperator(input,operators);
System.out.print("请输入你要运算的第二个数:");
count.two=checkOpera.checkNum(input);
if("+".equals(count.fu)){
count.outcome=count.one+count.two;
System.out.println(count);
}
}
}
class Count{
float one;
float two;
String fu;
float outcome; // 结果
public String toString(){
return one+fu+two+"="+outcome;
}
}
class CheckOperation{
/*验证数字,输错了会提示用户重新输入*/
public float checkNum(Scanner input){
float num=0f;
try {
num=Float.parseFloat(input.next());
} catch (NumberFormatException e) {
System.out.print("请输入正确的数字: ");
num=checkNum(input); //直至获取到正确的值
}
return num;
}
/*验证输入的符号是否正确*/
public String checkOperator(Scanner input,String[] operators){
String opera=null;
boolean judge=true;
opera=input.next();
for(String operator:operators){
if(operator.equals(opera)) judge=false;
}
if(judge) {
System.out.print("请输入正确的运算符: ");
opera=checkOperator(input,operators);
}
return opera;
}
}