
b1:5
b2:6
b3:56
b4:57
b5:6
b6:6
b7:57
b8:57
BigDecimalROUND_DOWN:舍去多余小数位
官方解释:向零方向舍入的舍入模式。
BigDecimalROUND_HALF_DOWN:五舍六入
官方解释:向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。
BigDecimalROUND_UP:舍去多余小数位后最后一位+1
官方解释:远离零方向舍入的舍入模式。
BigDecimalROUND_HALF_UP:四舍五入
官方解释:向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。
个int怎么转换为bytes[]呢?如果一定要做也行。byte是8位的二进制,int是32位的二进制,可以将32位拆开,放入byte[]中。这就是原理。具体做法:调用Integer里面的toBinaryString()方法,将你的int转换为二进制,这个二进制是String类型的,在调用String里面的getBytes(),这样就可以将int转换为byte[]了,这题就是在玩二进制,知道就行了。
如果是用JS,就用toFixed(2)用这个函数(四舍五入保留几位数)。
如果是jsp,就用 BigDecimal mData = new BigDecimal("9655")setScale(2, BigDecimalROUND_HALF_UP);这个和上面相同,四舍五入保留几位数。如果不想保留,直接将你的数值转换成字符串,然后通过indexOf()来获取到小数点所在的位置,最后截取字符串小数点后几位小数,根据你的需求做。
Stringsplit()字符串分割的参数是正则表达式,猜测你可能是因为这个所以分割出错了
public class Test {public static void main(String[] args) {
Systemoutprintln(getLength(12312)); // 32
Systemoutprintln(getLength(236700)); // 22
Systemoutprintln(getLength(1500)); // 20
Systemoutprintln(getLength(1234)); // 40
}
private static String getLength(double num) {
// 注意 15、15000 会被转成 150 ,请自行判断是否符合要求
String str = StringvalueOf(num);
String[] nums = strsplit("\\");// split方法的参数是正则表达式,所以需要转义
int intLen = nums[0]length();
int decimalLen = nums[1]equals("0") 0 : nums[1]length(); // 150 的情况特殊处理,小数长度设为0
// int decimalLen = nums[1]length(); // 小数不特殊处理
return intLen + "" + decimalLen;
}
}
import javamathBigDecimal;
import javautilScanner;
public class Calculator {
public static void main(String[] args) {
Calculator c = new Calculator();
while(true){
Scanner s = new Scanner(Systemin);
Systemoutprint("请输入第一个整数:");
String n1 = snext();;
if(!cisInteger(n1)){
Systemoutprintln("输入格式错误!\n");
continue;
}
Systemoutprint("请输入第二个整数:");
String n2 = snext();
if(!cisInteger(n2)){
Systemoutprintln("输入格式错误!\n");
continue;
}
Systemoutprint("请输入运算符(+、-、、/):");
String op = snext();
if(coperate(n1, n2, op)){
Systemoutprintln("运算符输入错误,退出程序。");
break;
}
}
}
public boolean operate(String num1,String num2,String op){
BigDecimal n1 = new BigDecimal(num1);
BigDecimal n2 = new BigDecimal(num2);
if(opequals("+")){
Systemoutprintln(n1add(n2));
}else if(opequals("-")){
Systemoutprintln(n1add(n2negate()));
}else if(opequals("")){
Systemoutprintln(n1multiply(n2));
}else if(opequals("/")){
Systemoutprintln(n1divide(n2));
}else{
return false;
}
return true;
}
public boolean isInteger(String num){
return nummatches("[0-9]+");
}
}
BigDecimal的除法,需要指定计算答案的精度,那样肯定会报异常。
MathContext mc = new MathContext(2, RoundingModeHALF_DOWN);
BigDecimal a = new BigDecimal(05);
BigDecimal bd1 = new;
BigDecimal("30000000000000000000000000000000000000000000000000000000000");
BigDecimal bd2 = new BigDecimal(3);
//MathContext,第一个参数表示你要保留几位小数,第二参数表示最后一位是取顶。
构造方法
BigDecimal一共有4个构造方法:
BigDecimal(int) 创建一个具有参数所指定整数值的对象。
BigDecimal(double) 创建一个具有参数所指定双精度值的对象。(不建议采用)
BigDecimal(long) 创建一个具有参数所指定长整数值的对象。
BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。
以上就是关于关于Bigdecimal的小问题。全部的内容,包括:关于Bigdecimal的小问题。、怎样将BigDecimal转换成Int、jsp页面怎么截取值的位数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)