barriers / 阅读 / 详情

Java中,如何对大数开根号啊!

2023-07-22 13:13:51
TAG: ava ja java 根号
共7条回复
nicehost
* 回复内容中包含的链接未经审核,可能存在风险,暂不予完整展示!

java中对于大数BigInteger,BigDecimal开根号没有提供函数,可以参考以下实现方法:

import java.math.BigDecimal;

import java.math.BigInteger;

public class BigSquareRoot {

final static BigInteger HUNDRED = BigInteger.valueOf(100);

public static BigDecimal sqrt(BigDecimal number, int scale, int roundingMode) {

if (n****.compareTo(BigDecimal.ZERO) < 0)

throw new ArithmeticException("sqrt with negative");

BigInteger integer = number.toBigInteger();

StringBuffer sb = new StringBuffer();

String strInt = integer.toString();

int lenInt = strInt.length();

if (lenInt % 2 != 0) {

strInt = "0" + strInt;

lenInt++;

}

BigInteger res = BigInteger.ZERO;

BigInteger rem = BigInteger.ZERO;

for (int i = 0; i < lenInt / 2; i++) {

res = res.multiply(BigInteger.TEN);

rem = rem.multiply(HUNDRED);

BigInteger temp = new BigInteger(strInt.substring(i * 2, i * 2 + 2));

rem = rem.add(temp);

BigInteger j = BigInteger.TEN;

while (j.compareTo(BigInteger.ZERO) > 0) {

j = j.subtract(BigInteger.ONE);

if (((res.add(j)).multiply(j)).compareTo(rem) <= 0) {

break;

}

}

res = res.add(j);

rem = rem.subtract(res.multiply(j));

res = res.add(j);

sb.append(j);

}

sb.append(".");

BigDecimal fraction = number.subtract(number.setScale(0, BigDecimal.ROUND_DOWN));

int fracLen = (fraction.scale() + 1) / 2;

fraction = fraction.movePointRight(fracLen * 2);

String strFrac = fraction.toPlainString();

for (int i = 0; i <= scale; i++) {

res = res.multiply(BigInteger.TEN);

rem = rem.multiply(HUNDRED);

if (i < fracLen) {

BigInteger temp = new BigInteger(strFrac.substring(i * 2, i * 2 + 2));

rem = rem.add(temp);

}

BigInteger j = BigInteger.TEN;

while (j.compareTo(BigInteger.ZERO) > 0) {

j = j.subtract(BigInteger.ONE);

if (((res.add(j)).multiply(j)).compareTo(rem) <= 0) {

break;

}

}

res = res.add(j);

rem = rem.subtract(res.multiply(j));

res = res.add(j);

sb.append(j);

}

return new BigDecimal(sb.toString()).setScale(scale, roundingMode);

}

public static BigDecimal sqrt(BigDecimal number, int scale) {

return sqrt(number, scale, BigDecimal.ROUND_HALF_UP);

}

public static BigDecimal sqrt(BigDecimal number) {

int scale = number.scale() * 2;

if (scale < 50)

scale = 50;

return sqrt(number, scale, BigDecimal.ROUND_HALF_UP);

}

public static void main(String args[]) {

BigDecimal num = new BigDecimal("6510354513.6564897413514568413");

long time = System.nanoTime();

BigDecimal root = sqrt(num, 1000);

time = System.nanoTime() - time;

System.out.println(root);

System.out.println(root.pow(2));

System.out.println(time);

}

}

执行结果:

80686.7678969512927493416316741557266722739984372151634715876752358049492663077817843059095146637911180490885758744651273281303288317374885332607051330176028572558172054217029042642080284121950891605518862273493239191320132148293688445347529243846517751025383884710742819252354014378344895438280908159584992112041354808433466321589387318739165992813377399669170549811704076258078653548749003251504791227309054913701062929858500433745971631998487835576600579373929233933246442803804132298016737159672317482520249763464713581048142915509001995943192415694815489364740152312416736301233269587910628885614893125235822493317184917626076223325819402403220531926392808333854523694780539563293133232729900988243013464020440976396084796739002581380094075169287492710301071487312491530290342213569053680461901907481289230152643599970138861788489599118674849815164425194138401918499233009571650761625943781367455101019720348741842171772915942278011905594031830367343193606047124373968951524359600676406162506362881367

6510354513.65648974135145684129999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999261018570188221952291201089398906052231483112444155137889353596770526763176032152876816872483428732651504536335267475372360148274382594285697529542224437785449440331424040251426099649509195223143651828659587364153208947136985285283628868915378240201094213227734756251495878566340409599684823659444904292099882985668906808623177208665251919370268937893457306121802766566270627041680526252368411023459487996551104603913903029501700835230597885867761183071537171958826568685086349210032834841075060512309444622145616551108119893623864579013813710941167261179972571233574705638862140357465569295994523261742960807593601727929262728856153880503561459736300910103299707873770713267018154171165545178430002342459940561678884530151166769964180453998734209554051691222326553700712948508454649608942746651683572634224323098274435576290709769148239120722342126902645574609770558211829972705514153006434846614016006956921594506606758832662240593485962629910320205678474047322232577044567479336985830934534290515788689

46726188

真可

BigInteger,BigDecimal 是无精度损失运算的,也就是说只要你给出合法的算法,它就能给出精确的结果。

但你知道,开方有时会是一个无限小数,也就是说,如果叫BigInteger,BigDecimal去开方将永远运行下去,这显然不是你想要的,但如果精确到小数点后N位,这又违背了无精度损失的初衷,所以就有了你提的问题。

你拿BigDecimal(1) divide BigDecimal(3) 就知道了。

苏萦
* 回复内容中包含的链接未经审核,可能存在风险,暂不予完整展示!

貌似暂时还没有

自己写

import java.math.BigDecimal;

import java.math.MathContext;

public class Test5 {

public static void main(String[] args) {

BigDecimal n = new BigDecimal("2");

BigDecimal r = sqrt(n);

System.out.println(r.toString());

}

public static BigDecimal sqrt(BigDecimal num) {

if(n*.compareTo(BigDecimal.ZERO) < 0) {

return BigDecimal.ZERO;

}

BigDecimal x = num.divide(new BigDecimal("2"), MathContext.DECIMAL128);

while(x.subtract(x = sqrtIteration(x, num)).abs().compareTo(new BigDecimal("0.0000000000000000000001")) > 0);

return x;

}

private static BigDecimal sqrtIteration(BigDecimal x, BigDecimal n) {

return x.add(n.divide(x, MathContext.DECIMAL128)).divide(new BigDecimal("2"), MathContext.DECIMAL128);

}

}

陶小凡

比如

//保留1000位有效数字

BigDecimal num = new BigDecimal("4");

MathContext mc = new MathContext(1000,RoundingMode.HALF_DOWN);

BigDecimal finalnum = new BigDecimal(Math.sqrt(num.doubleValue()) ,mc);

可可

比如

//保留1000位有效数字

BigDecimal num = new BigDecimal("4");

MathContext mc = new MathContext(1000,RoundingMode.HALF_DOWN);

BigDecimal finalnum = new BigDecimal(Math.sqrt(num.doubleValue()) ,mc);

FinCloud

直接调用Math.sqrt就可以啦

wpBeta

class A{

public static void main(){

double m=4.0;

double n=Math.sqrt(m);

System.out.println(n);

}

}

其实就是调用Math下面的sqrt方法

相关推荐

BigDecimal 怎么比较大小

当然是使用compareTo:new BigDecimal(1).compareTo(new BigDecimal("1.0"))但是,注意:compareTo 其实也有坑。如果试用:new BigDecimal(1) 与new BigDecimal("1.00"),结果是true. 但是换成 new BigDecimal(1.2).compareTo(new BigDecimal("1.20")),结果就是false.这时问题又来了。所以保险的办法是把小数位去掉再比较。比如*100。都升到个位数。或者统一使用setScale定好小数位。我之前就不知这个坑,搞了好久。
2023-07-22 12:51:314

BigDecimal和Int类型的转换,以及BigDecimal的常用运算

Int类型转换为bigdecimal类型:先将int转为String,再通过BigDecimal的构造方法去创建 BigDecimal price = new BigDecimal(String str); Bigdecimal类型相加 BigDecimal newDeposit=price.add(oldDecimal); 扩充 add(BigDecimal)BigDecimal对象中的值相加,然后返回这个对象。 subtract(BigDecimal)BigDecimal对象中的值相减,然后返回这个对象。 multiply(BigDecimal)BigDecimal对象中的值相乘,然后返回这个对象。 divide(BigDecimal)BigDecimal对象中的值相除,然后返回这个对象。 toString()将BigDecimal对象的数值转换成字符串。 doubleValue()将BigDecimal对象中的值以双精度数返回。 floatValue()将BigDecimal对象中的值以单精度数返回。 longValue()将BigDecimal对象中的值以长整数返回。 intValue()将BigDecimal对象中的值以整数返回。
2023-07-22 12:52:171

bigdecimal 判断是否有小数位

BigDecimal b = new BigDecimal("1.1"); if(new BigDecimal(b.intValue()).compareTo(b)==0){ System.out.println("b 是整数"); }else{ System.out.println("b 是小数"); }
2023-07-22 12:52:541

在java中,如何把BigDecimal类型转成Integer?

BigDecimal比Integer大得多,转换的话会有发生异常的可能,所以不建议这么做。1.Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。2.Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
2023-07-22 12:53:032

请问,java里,如何把BigDecimal类型转成Integer

BigDecimal有.intValue() 这个方法
2023-07-22 12:53:415

bigdecimal可以有小数吗

BigDecimal b = new BigDecimal("1.1");if(new BigDecimal(b.intValue()).compareTo(b)==0){System.out.println("b 是整数");}else{System.out.println("b 是小数");}
2023-07-22 12:54:291

bigdecimal multiply 怎么保留2位小数

BigDecimal b=new BigDecimal(0);b.multiply(new BigDecimal(0)).setScale(2,BigDecimal.ROUND_HALF_UP);保留两位小数,四舍五入
2023-07-22 12:54:391

国开Java语言程序设计形考4答案谁有?

import java.math.BigDecimal;public class Commodity{private BigDecimal beer_price = new BigDecimal("3.5");private BigDecimal noodle_price = new BigDecimal("4.5");private BigDecimal water_price = new BigDecimal("2");private BigDecimal total_price = new BigDecimal("0");public float pay(int beerNum,int noodleNum,int waterNum){payBeer(beerNum);payNoodle(noodleNum);payWater(waterNum);return total_price.floatValue();}public void payBeer(float num){BigDecimal bigDecimal;if (num > 2){bigDecimal = new BigDecimal(Double.toString(num)).multiply(beer_price).multiply(new BigDecimal("0.9"));}else{bigDecimal = new BigDecimal(Double.toString(num)).multiply(beer_price);}total_price = total_price.add(bigDecimal);}public void payNoodle(float num){BigDecimal bigDecimal;if (num > 2){bigDecimal = new BigDecimal(Double.toString(num)).multiply(noodle_price).multiply(new BigDecimal("0.9"));}else{bigDecimal = new BigDecimal(Double.toString(num)).multiply(noodle_price);}if (bigDecimal.floatValue() >= 20){bigDecimal.subtract(new BigDecimal("2"));}total_price = total_price.add(bigDecimal);}public void payWater(float num){BigDecimal bigDecimal;if (num > 2){bigDecimal = new BigDecimal(Double.toString(num)).multiply(water_price).multiply(new BigDecimal("0.9"));}else{bigDecimal = new BigDecimal(Double.toString(num)).multiply(water_price);}total_price = total_price.add(bigDecimal);}}=================================================public class Test{public static void main(String[] args){Commodity xiaomei = new Commodity();System.out.println("小美消费:" + xiaomei.pay(3,3,2));Commodity xiaoming = new Commodity();System.out.println("小明消费:" + xiaoming.pay(2,5,0));}}
2023-07-22 12:54:521

在java中如何将bigdecimal类型转成String类型?

public String toString():返回此 BigDecimal 的字符串表示形式,如果需要指数,则使用科学记数法。可以看一下Java帮助文档。希望对你有所帮助。 import java.math.BigDecimal;public class BigDecimalToString { public static void main(String[] args){ BigDecimal b1 = new BigDecimal("123.456777753413321231"); String result = b1.toString(); System.out.println("result = "+result); }}
2023-07-22 12:55:052

java中 BigDecimal类型的可以转换到double类型吗?如何转换

用doubleValue()函数!
2023-07-22 12:55:152

如何判断 bigdecimal 数值是否为非空?

String name=rs.getString("name"); java中的String对应sql中的varchar BigDecimal decimal=new BigDecimal(rs.getInt("num"));不为零。Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。扩展资料:BigDecimal一共有4个构造方法:BigDecimal(int) 创建一个具有参数所指定整数值的对象。BigDecimal(double) 创建一个具有参数所指定双精度值的对象。BigDecimal(long) 创建一个具有参数所指定长整数值的对象。BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。参考资料来源:百度百科-BigDecimal
2023-07-22 12:55:323

BigDecimal怎么比大小?

BigDecimal比大小,需要声明两个BigDecimal类型变量b1和b2,调用equals()方法比较大小。BigDecimal a = new BigDecimal("1.00");BigDecmial b = new BigDecimal(1);想比较一下a和b的大小,一般都会用equals。BigDecimal其他情况简介。使用BigDecimal类构造方法传入double类型时,计算的结果也是不精确的。因为不是所有的浮点数都能够被精确的表示成一个double 类型值,有些浮点数值不能够被精确的表示成 double 类型值,因此它会被表示成与它最接近的 double 类型的值。必须改用传入String的构造方法。这一点在BigDecimal类的构造方法注释中有说明。BigDecimal向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。如果舍弃部分左边的数字为奇数,则舍入行为与 ROUND_HALF_UP 相同。
2023-07-22 12:55:561

java 等额本息还款。这个应该怎么算?

import java.math.BigDecimal; /** * 银行还款计算 * @author cuiran * @version TODO */ public class BankRefund { /** * * 等额本金还款法【利息少,但前期还的多】 * @param totalMoeny 贷款总额 * @param rate 贷款商业利率 * @param year 贷款年限 */ public static void principal(int totalMoney,double rate,int year){ /** * 每月本金 */ int totalMonth=year*12; double monthPri=totalMoney/totalMonth; /** * 获取月利率 */ double monRate=resMonthRate(rate); BigDecimal b = new BigDecimal(monRate); monRate = b.setScale(6, BigDecimal.ROUND_HALF_UP).doubleValue(); for(int i=1;i<=totalMonth;i++){ double monthRes=monthPri+(totalMoney-monthPri*(i-1))*monRate; BigDecimal b1 = new BigDecimal(monthRes); monthRes = b1.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); System.out.println("第"+i+"月,还款为:"+monthRes); } } /** * * 等额本息还款【利息多】 * @param totalMoeny 贷款总额 * @param rate 贷款商业利率 * @param year 贷款年限 */ public static void interest(int totalMoney,double rate,int year){ /** * 获取月利率 */ double monRate=resMonthRate(rate); /** * 月还款本息 */ double monInterest=totalMoney*monRate*Math.pow((1+monRate),year*12)/(Math.pow((1+monRate),year*12)-1); BigDecimal b = new BigDecimal(monInterest); monInterest = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); System.out.println("月供本息和:"+monInterest); } /** * * 转换为月利率 * @param rate * @return */ public static double resMonthRate(double rate){ return rate/12; } /** * TODO * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int totalMoney=430000; double rate=0.0655; int year=20; // BankRefund.interest(totalMoney, rate, year); BankRefund.principal(totalMoney, rate, year); } }
2023-07-22 12:56:221

如何将bigdecimal转换为int

BigDecimal a=new BigDecimal(12.88);int b=a.intValue();System.out.println(b);//b=12;
2023-07-22 12:56:401

如何把java得出的数值,保留小数点2位四舍五入

我写的C语言的算法,应该你可以转换下吧?呵呵!就是通过整形数据的特点了;例如该变量为float x;浮点型数据四舍五入的算法为:{int i=0; 整型数据; i=(2*x*100+1)/2; x=(float)i/100;}当保留小数点后两位是用100;3为是1000,1位是当然是10了;明白?唉!没学过,看着有点困难。
2023-07-22 12:56:493

java如何存储巨大的数字比如100!

java中有存储大数值的类
2023-07-22 12:57:004

若有定义语句int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值为多少

(x+y) = 7.2(int)(x+y) = 7a%3*(int)(x+y) = 1a%3*(int)(x+y)%2/4 = 1%2/4 = 0/4 = 0(所有变量均是Int型)x+0 = 2.5
2023-07-22 12:57:194

怎么用Java程序计算20的阶乘?

public class Test{ public static void main(String[] args) { BigDecimal cnt = new BigDecimal(0); for (int i = 1; i <= 20; i++) { cnt = cnt.add(jiecheng(i)); } System.out.println(cnt); } public static BigDecimal jiecheng (int n) { if (n == 1) { return new BigDecimal(1); } //multiply()相乘 return jiecheng(n - 1).multiply(new BigDecimal(n)); }} 数值太大,只能用BigDecimal类型来表示
2023-07-22 12:57:493

decimal转换

转换为String 直接截取,再转换为double啊!或者自定义格式!
2023-07-22 12:57:573

Java编写程序计算打折后金额

public static void main(String[] args) {double amount = 1200;// 消费金额 boolean isTeacherOrOld = true; // 是否有教师资格证或者老人标识BigDecimal discountEightFive = new BigDecimal("0.85");// 85折BigDecimal discountNine = new BigDecimal("0.9");// 95折BigDecimal discountNineFive = new BigDecimal("0.95");// 95折BigDecimal bdAmount = new BigDecimal(Double.toString(amount));BigDecimal calcAmount = new BigDecimal("0.00");if (amount >= 2000) {calcAmount = bdAmount.multiply(discountEightFive);} else if (amount > 1000 && amount < 2000) {calcAmount = bdAmount.multiply(discountNine);} else {calcAmount = new BigDecimal(Double.toString(amount));}if (isTeacherOrOld && amount >= 1000) {System.out.println("消费金额:" + calcAmount.multiply(discountNineFive).toString());} else {System.out.println("消费金额:" + calcAmount.toString());}}
2023-07-22 12:58:361

如何正确显示 BigDecimal 作为一个字符串

integer、int ---> int tinyint、smallint ---> short bigint ---> long decimal、numeric ---> java.math.BigDecimal float ---> float double ---> double char、varchar ---> String boolean、bit ---> boolean date ---> java.sql.Date time ---> java.sql.Time timestamp ---> java.sql.Timestamp blob ---> java.sql.Blob clob ---> java.sql.Clob array ---> java.sql.Array
2023-07-22 12:58:431

java中BigDecimal与Float,Double的区别

Float,Double分别是对float和double的封装表示的精度和他们是一样的。但里面有很多有用的方法。。比如Double.praseDouble()等等。。BigDecimal也是对数字类型数据的封装。。但他的精度是任意精度。。即随便多长随便小数点后多少位。。
2023-07-22 12:59:031

怎样将BigDecimal转换成Int

BigDecimal a=new BigDecimal(12.88);int b=a.intValue();System.out.println(b);//b=12;
2023-07-22 12:59:111

如何将一个double类型的数四舍五入保留两位小数

方式一:四舍五入 double f = .5585; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 保留两位小数 --------------------------------------------------------------- 方式二:java.text.DecimalFormat df =new java.text.DecimalFormat("#.00"); df.format(你要格式化的数字);例:new java.text.DecimalFormat("#.00").format(3.)#.00 表示两位小数 #.0000四位小数 以此类推方式三:double d = 3.;String result = String .format("%.2f");%.2f %. 表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型方式四:NumberFormat ddf1=NumberFormat.getNumberInstance() ; void setMaximumFractionDigits(int digits) digits 显示的数字位数 为格式化对象设定小数点后的显示的最多位,显示的最后位是舍入的
2023-07-22 12:59:201

怎么将null转换为BigDecimal类型

您好,希望以下回答能帮助您有方法 java.math.BigDecimal.doubleValue() BigDecimal a = new BigDecimal(1000); return a.doubleValue();如您还有疑问可继续追问。
2023-07-22 12:59:291

用Java中相关的api实现:算出你出生多少天了?

import java.math.BigDecimal;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class CalcYourBirthDays {static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");public static void main(String[] args) {String birthday = "1992-07-10"; //出生年月日try {calcTotalDays(birthday);} catch (Exception e) {System.out.println(e);}}public static int calcTotalDays(String birthday) throws Exception{Date now = new Date();long nowTime = now.getTime();BigDecimal totalDays = BigDecimal.ZERO;try {Date birth = sdf.parse(birthday);long birTime = birth.getTime();long diff = nowTime-birTime;BigDecimal difdec = new BigDecimal(diff);BigDecimal dayNum = new BigDecimal(24*3600*1000);totalDays = difdec.divide(dayNum, BigDecimal.ROUND_HALF_UP);System.out.println("您已出生:"+totalDays+"天");System.out.println("您今年"+totalDays.divide(new BigDecimal(365), BigDecimal.ROUND_HALF_UP)+"岁");} catch (ParseException e) {throw new Exception("-------------格式转换异常:"+e);}return 0;}}
2023-07-22 12:59:381

java中BigDecimal 的加减乘除和“+”“-”“*”“/”有什么区别

直接在java类中进行运算,可以明显看出,直接运算会产生精度丢失!!!
2023-07-22 12:59:462

BigDecimal他是什么数据类型?

BigDecimal一共有4个构造方法BigDecimal(int) 创建一个具有参数所指定整数值的对象。BigDecimal(double) 创建一个具有参数所指定双精度值的对象。BigDecimal(long) 创建一个具有参数所指定长整数值的对象。BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。BigDecimal 的运算方式 不支持 + - * / 这类的运算 它有自己的运算方法BigDecimal add(BigDecimal augend) 加法运算BigDecimal subtract(BigDecimal subtrahend) 减法运算BigDecimal multiply(BigDecimal multiplicand) 乘法运算BigDecimal divide(BigDecimal divisor) 除法运算
2023-07-22 12:59:592

new bigdecimal的乘法方法是哪个

BigDecimal的除法,需要指定计算答案的精度,你那样肯定会报异常。虽然你知道答案为2.5,但计算机不知道你的精度为多少,会抛异常的。我给你写一段,MathContext mc = new MathContext(2, RoundingMode.HALF_DOWN);//精度为2,舍入模式为大于0.5进1,否则舍弃。 BigDecimal a = new BigDecimal(0.5);BigDecimal b = new BigDecimal(0.2);System.out.println(a.divide(b,mc));
2023-07-22 13:00:061

Jquery中怎样使用BigDecimal方法

解决办法:if(a.compareTo(b)==0) 结果是truepublic int compareTo(BigDecimal val)Compares this BigDecimal with the specified BigDecimal.Two BigDecimal objects that are equal in value but have a differentscale (like 2.0 and 2.00) are considered equal by this method.This method is provided in preference to individual methods for each ofthe six boolean comparison operators (<, ==, >, >=, !=, <=).
2023-07-22 13:00:151

关于Java 小数(浮点型)相加

BigDecimal num1 = new BigDecimal("3.14");BigDecimal num2 = new BigDecimal("0.37");System.out.println(b1.add(b2));
2023-07-22 13:00:251

BigDecimal对象的值如何修改?

static BigDecimal valueOf(double val) static BigDecimal valueOf(long val) static BigDecimal valueOf(long unscaledVal, int scale)Double.parseDouble(String)
2023-07-22 13:00:442

java中BigDecimal与Float,Double的区别

精度不同,Float,Double是float,double的封装类BigDecimal主要用于计算金额
2023-07-22 13:00:522

java String转bigdecimal 精确两位小数点

String s="125.671";BigDecimal b = new BigDecimal(s); b=b.setScale(2, BigDecimal.ROUND_DOWN); //小数位 直接舍去//b=b.setScale(2, BigDecimal.ROUND_HALF_UP); //四舍五入//BigDecimal add(BigDecimal augend) //BigDecimal subtract(BigDecimal subtrahend)//BigDecimal multiply(BigDecimal multiplicand) //BigDecimal divide(BigDecimal divisor)BigDecimal c = b.add(nwe BigDecimat("763.21"));
2023-07-22 13:01:001

怎样去掉 java BigDecimal 类对象后面没用的零?

NumberFormat nf = NumberFormat.getInstance(); nf.format(3.300);
2023-07-22 13:01:072

java中bigdecimal怎么序列化

实现bigdecimal类型转成String类型: BigDecimal bd = new BigDecimal("xxx"); String str = bd.toString(); 扩展:String类型转成bigdecimal类型 String str = "xxx"; BigDecimal bd = new BigDecimal(str);
2023-07-22 13:01:171

bigdecimal长度包含小数位吗

是包含的,但有时候会对精度精确不准确。因为我们的计算机是二进制的。浮点数没有办法是用二进制进行精确表示。我们的CPU表示浮点数由两个部分组成:指数和尾数,这样的表示方法一般都会失去一定的精确度,有些浮点数运算也会产生一定的误差。如:0.5的二进制表示并非就是精确的0.5。反而最为接近的二进制表示是 0.049999999999999996。这种情况下我们可以用java.math包下面的BigDecimal类,BigDecimal主要用于高精度的数据计算,例如计算金额的时候,还有工程测量计算的时候。BigDecimal的提供了add(),subtract(),multiply()和divide()四种方法,分别为加减乘除。
2023-07-22 13:01:241

java中 BigDecimal类型的可以转换成double型吗?如何转换

可以,例如:BigDecimal a = new BigDecimal(1000.00);double b=a.doubleValue();
2023-07-22 13:01:311

java 查询的结果为 0e-8 和 0E-12,这是什么意思

1、e.一般习惯用来做异常信息的输出处理 2、比如在try ... catch块中,进行异常信息Exception e的对象e错误信息打印,如下: try { // 程序处理} catch(Exception e) { e.printStackTrace();}
2023-07-22 13:01:414

eclipse 中出现警告 :The method divide(BigDecimal, int, int) from the type BigDecimal is deprecat

这个警告是说:这个方法(divide)已经过期了,不建议使用。过期的意思就是说,你现在还能用,用了结果也正确,但是说不定什么时候开始,新版本就没有这个方法了。给出警告的原因是,因为在将来某个时间有不再提供该方法的可能,会给你的代码带来兼容性问题(在新版本上不能正确运行,或者根本不能运行)。解决的办法:一般对于过期方法,作者会在注释中写明:use xxxx instead字样,告诉你改用哪个新方法,这是最佳的办法如果你一定要使用,就会面对黄色浪线的问题,如果是重度强迫症,可以加上@SuppressWarnings("deprecation"),这样编译器不会对过期发出警告。
2023-07-22 13:02:181

BigDecimal 型变量该怎么赋值

如:item.setWeight(BigDecimal.valueOf(125.00))
2023-07-22 13:02:283

Java中,当的数据过大时,如何避免值的改变?

用double型
2023-07-22 13:02:494

java的bigdecimal类的用法

Java的BigDecimal类是java.math 包里的一个类,它提供了一些用于执行高精度浮点数计算的方法。由于它可以保持任意精度,所以它可以用于货币计算及其他需要精确结果的场合。下面是一些BigDecimal类的常用方法:add():该方法用于将两个BigDecimal对象相加,返回一个新的BigDecimal对象;subtract()
2023-07-22 13:02:561

为什么java中BigDecimal.setScale方法小数位数超过5就不起作用了?

因为BigDecimal的原因吧,也可以说是double的问题吧new BigDecimal(currentLat2); 时值不再是 2.455675而是2.455674999999999999999999因此在保留5位小数,四舍五入时,就变成2.45567而不是2.45568后一个正确是因为没形成这种数据。这种情况,用字符串可以避免这种问题String currentLat2 = "2.455675"; BigDecimal b = new BigDecimal(currentLat2); System.out.println(b.setScale(5, BigDecimal.ROUND_HALF_UP).doubleValue());
2023-07-22 13:03:181

关于BigDecimal的divide()方法。。。求解。。。。。。。。。。。。。。。。。

BigDecimal bigDecimal1 = new BigDecimal(100.0);BigDecimal bigDecimal2 = new BigDecimal(33.0);BigDecimal b = bigDecimal1.divide(bigDecimal2,0,BigDecimal.ROUND_DOWN);取整数
2023-07-22 13:03:285

bigdecimal的长度限制

长度一共能存10位数字。小数由定义的去存储,字段最大99999999.99,(定义的小数会累加在长度内)。varchar类型可以存储多少个汉字,多少个数字。4.0版本以下,比如varchar(100),指的是100字节,如果存放UTF8汉字时,只能存33个(每个汉字3字节)。5.0版本以上,比如varchar(100),指的是100字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放100个。
2023-07-22 13:03:581

#java#Map取值的时候bigdecimal类型的怎么转换为String类型的

是long型的,((Long)cmp.get("id")).tostring(); 大概这样,没验证
2023-07-22 13:04:063

求解答过程

由题给条件可知,四边形ABCD的四个顶点共圆,作出这个圆,然后过C点作CF∥BD交圆于F,连AF,可知△ACF为等腰直角三角形,CF=AC,过F作FG⊥BD交BD于G,可知GD=BE,设BE=x,则AC=5x,同时:EG=CF=5x,GD=x。∴BD=BE+EG+GD=x+5x+x=7x=14,∴x=2,即BE=2∴AC=5BE=10解题过程中有一些步骤有省略,但相信你是可以看懂,并将省略的步骤补全的。加油!么么哒!
2023-07-22 13:04:532

如何获取BigDecimal的负数

BigDecimal num=new BigDecimal("123");BigDecimal oppositeNum=num.negate();
2023-07-22 13:05:203

plu历史沿革

1.历史沿革是什么意思 词汇释义 编辑 历史:①自然界和人类社会的发展过程;②过去的事实;③过去事实的记载;④指历史学科。 沿革:沿,就是延续。革,就是变迁。 历史沿革:指(某事物)发展和变化的历程。 3包含内容 编辑 1、社会风俗的历史沿革。 2、历史沿革地图。 4例句用法 编辑 师傅介绍了北京烤鸭的历史沿革和加工制作方法。 每一个学院都有它自己的的历史沿革,所得,规章和组织形式。 论文首先介绍了社会保障立法的历史沿革,然后分析了社会保障制度中存在的法律问题,最后提出了解决问题的途径和方法。 2.企业历史沿革怎么写 企业历史沿革着手写: 1. 从企业最早成立的时。 2. 最初的情况写起。 3. 然后写类似于大事记一样。 ( 把发生的重大事件,主要负责人更换,单位名称的变化等,按年份罗列。) 涉及政治活动规律和政治思想发展变化的重要节点,重点是说明这些节点的关系,包括形成原因、相互影响、实际作用、历史和现实意义,根本中改革开放对企业发展的基本利益出发,突现了历史革命,简称历史沿革! 拓展资料 内容包括: 1.社会风俗的历史沿革。 2.历史沿革地图。 历史沿革例句如: 1.师傅介绍了北京烤鸭的历史沿革和加工制作方法。 2.每一个学院都有它自己的的历史沿革,所得,规章和组织形式。 3.论文首先介绍了社会保障立法的历史沿革,然后分析了社会保障制度中存在的法律问题,最后提出了解决问题的途径和方法。 参考资料:百度百科。 3.新德里的历史沿革 德里有着光荣的过去和悠久的历史,作为古都和文化名城,深深的吸引着无数各地来的游客。 据印度史诗《摩诃婆罗多》记载,公元前1000多年以前,班度族曾在此建都。 老德里历史悠久,建都公元前约1400年,取名“因陀罗普拉斯特”,即“因陀罗神(雷神)之住所”。 8世纪曲女城的土邦王迪里重建此城,由于古代诸侯割据,征战不休,德里几经兴衰,历尽沧桑。 公元前1世纪,孔雀王朝的王公拉贾·迪里在此立国,构筑都城,并以自己的名字命名这座城市。 新德里又是印度历史上7个王朝的遗址,留下了丰富的历史文物,可以说是印度历史文物的宝库。现在的旧德里是最后一座保存下来的城市。在城区和郊外还保留着不少古城的断壁残垣,至今还能辨认的古城有6座。其中有: 1060年印度教王国阿里南格帕尔国王时期建造的拉拉科特; 1304年卡尔吉王朝阿拉·乌德·丁国王时期建造的西里城; 1321年杜洛拉克王朝时期建造的杜洛拉特巴德;弗罗兹·夏·杜洛拉克时期建造的弗罗兹巴德; 16世纪莫卧尔王朝时期建造的普拉纳奎拉等。遗留下来的旧德里,是莫卧尔王朝第五代帝王夏杰罕下令在1638年动工兴建的。 新德里是古老传统和现代化相互结合的一座城市。老德里如一面历史镜子,展现了印度的古代文明,新德里则是一座里程碑,让人们看到了印度前进的步伐。 12世纪末,征服印度的外来 *** 开始在这里建都。 公元1648年,莫卧儿王朝皇帝沙贾汗从阿格拉迁都到此,用10年时间建成了七个德里城中的最后一座,把德里改名为沙贾汗纳巴德。 17世纪中叶,莫卧儿王朝第五代皇帝沙杰汗从阿格拉迁都到此,用10年时间建成了七个德里城中的最后一座。 19世纪中期,英国吞并印度,英属印度的首都迁至加尔各答。 1911年,德里再次被宣布为首都。随即在德里城外的西南开始兴建一座城并于1931年完工,这就是新德里。 如果说旧德里展现了印度悠久的历史和灿烂的古文化,新德里则是印度近代摆脱贫困独立前进的影子。 1950年1月26日,独立后的印度宣布成立印度共和国,定都新德里。 4.工部的历史沿革 582年(开皇二年)始设立工部,置工部尚书一人为长官。 607年(大业三年)增置工部侍郎一人,佐领部事,下辖工部、屯田、虞部、水部四司,掌土木水利工程以及屯田、官府手工业之政令,具体事务则交少府监、将作监、都水监及地方府州办理。 662年(龙朔二年)改工部曰司平,屯田曰司田,虞部曰司虞,水部曰司川, 670年(咸亨元年)复为工部。 684年(光宅元年)改工部曰冬官。 705年(神龙元年)复故。 752年(天宝十一载)改虞部曰司虞,水部曰司水。 宋初,凡城池土木工役之事,皆隶属三司修造案,本曹无所掌,置判部事一人,以两制以上充任。 1082年(元丰五年)改官制,置工部尚书、工部侍郎各一人,诸司各置郎中、员外郎。工部尚书掌百工山泽沟洫屯田之政令,侍郎为副,郎中、员外郎分掌本司职事。 1086年(元祐元年)革其属部水部郎官一人。 1094年(绍圣元年)其属屯田部、虞部,以郎官一人兼领。 辽南面官亦置,设尚书、侍郎、郎中、员外郎等官,其制不详。 金朝隶尚书省,初与左右司同属署。 1140年(天眷三年)始分立为部,置尚书、侍郎、郎中、员外郎各一人,从六品。 1151年(天德三年)增二人;主事二人,从七品。下设令史、译史、通事等。辖修内司、都城所、祗应司、甄官署、上材署等。掌修造营建法式、诸作二匠、屯田、山林川泽之禁令、江河堤岸、道路桥梁诸事。 1260年(中统元年)以兵、刑、工为右三部。 1264年(至元元年)分立。 1266年(至元三年)复并之。 1270年(至元七年)再分。 1291年(至元二十八年)定制,属中书省,置尚书三人,正三品,下设侍郎、郎中、员外郎等官,统掌诸色人匠总管府等官署机构。 1368年(洪武元年)沿置,隶属中书省,设尚书、侍郎、郎中、员外郎。 1373年(洪武六年)增尚书、侍郎各一人,置总部、虞部、水部、屯田部四属部,各设郎中、员外郎分掌。 1375年(洪武八年)增立四科,科设尚书、侍郎、郎中各一人,员外郎二人,主事五人、照磨二人。 1380年(洪武十三年)罢中书省,升部秩,直接统属皇帝,改置尚书一人,侍郎一人,并改原属屯田部为屯部,四属部分置郎中、员外郎各一人,主事二人。 1382年(洪武十五年)增侍郎一人,始分左右。 1389年(洪武二十二年)改所属总部为营部。 1396年(洪武二十九年),又改四属部为营缮、虞衡、都水、屯田四清吏司,遂成定制。 建文年间(1399-1402)曾改尚书为正一品,增设左右侍中,正二品。位在侍郎上,并除各清吏司清吏字。 明成祖继位,复旧制。 永乐(1403-1424)迁都前,北京置有行在六部,迁都后改置为六部,而以南京原六部加南京二字。 明仁宗继位,复旧制。 1441年(正统六年)再复永乐迁都后旧制。 宣德年间(1426-1435)曾以尚书、侍郎提督易州山厂,专掌御用柴炭之事。 嘉靖(1522-1566)之后改由主事管理。 清代工部设于天聪五年(公元1631年),是管理全国工程事务的机关。职掌土木兴建之制,器物利用之式,渠堰疏降之法,陵寝供亿之典。凡全国之土木、水利工程,机器制造工程(包括军器、军火、军用器物等),矿冶、纺织等官办工业无不综理,并主管一部分金融货币和统一度量衡。明清工部下设四司:营缮清吏司,掌宫室官衙营造修缮;虞衡清吏司,掌制造、收发各种官用器物,主管度量衡及铸钱;都水清吏司,掌估销工程费用,主管制造诏册、官书等事;屯田清吏司,掌陵寝修缮及核销费用,支领物料及部分税收。除四司外,清设有制造库,掌制造皇帝车驾、册箱、宝箱、仪仗、祭器等;节慎库,掌收发经费款项;料估所,掌估工料之数及稽核、供销京城各坛庙、宫殿、城垣、各部院衙署等工程。 光绪三十二年(公元1906年),清 *** 在“筹备立宪”、改革官制时,将工部并入商部,改为农工商部。
2023-07-22 13:04:211