c语言sscanf函数的用法是什么
280
2022-11-06
BigDecimal 的setScale 和movePointRight
BigDecimal.setScale主要用于对BigDecimal数据小数点后的位数进行 进位、舍位、截断等操作
BigDecimal使用说明
不建议,会造成精度损失
BigDecimal num1 = new BigDecimal(2.222222);
不建议,虽然不会损失精度
BigDecimal num2 = new BigDecimal(2);
建议,使用字符串格式构造,不会损失精度
BigDecimal num = new BigDecimal("2.222222");
BigDecimal Rounding Modes
1. ROUND_UP = 0
BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_UP); System.out.println(b); //2.23 进位处理,不管后面数字的大小 2. ROUND_DOWN = 1BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_DOWN); System.out.println(b); //2.22 去掉多余的位数,不管后面数字的大小
3. ROUND_CEILING = 2
BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_CEILING); System.out.println(b);//2.23 如果是正数,相当于BigDecimal.ROUND_UP BigDecimal b = new BigDecimal("-2.222222").setScale(2, BigDecimal.ROUND_CEILING); System.out.println(b);//-2.22 如果是负数,相当于BigDecimal.ROUND_DOWN
4. ROUND_FLOOR = 3
BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_FLOOR); System.out.println(b);//2.22 如果是正数,相当于BigDecimal.ROUND_DOWN BigDecimal b = new BigDecimal("-2.222222").setScale(2, BigDecimal.ROUND_FLOOR); System.out.println(b);//-2.23 如果是负数,相当于BigDecimal.ROUND_HALF_UP
5. ROUND_HALF_UP = 4
BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_HALF_UP); System.out.println("ROUND_HALF_UP" + b); //2.22 根据后面的数字四舍五入(大于等于 5进位)
s
6. ROUND_HALF_DOWN = 5
BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_HALF_DOWN); System.out.println("ROUND_HALF_DOWN" + b);//2.22 根据后面的数字四舍五入(大于 5进位)
7. ROUND_HALF_EVEN = 6
BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_HALF_EVEN); System.out.println(b);//2.22 如果舍弃部分左边的数字为偶数,则作 ROUND_HALF_DOWN BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_HALF_EVEN); System.out.println(b);//2.22 如果舍弃部分左边的数字为奇数,则作 ROUND_HALF_UP
8. ROUND_UNNECESSARY = 7
BigDecimal b = new BigDecimal("2.22").setScale(3, BigDecimal.ROUND_UNNECESSARY); System.out.println(b); // Scale位数 必须小于等于 小数位数,否则会抛异常: java.lang.ArithmeticException: Rounding necessary
Java BigDecimal movePointRight()用法及代码示例
先决条件:BigDecimal基础
java.math.BigDecimal.movePointRight(int n)方法用于将当前BigDecimal的小数点向右移动n位。
如果n为非负数,则调用仅从小数位数中减去n。 如果n为负,则调用等效于movePointLeft(-n)。
此方法返回的BigDecimal具有值(this×10n)和小数位数最大值(this.scale()-n,0)。
用法:
public BigDecimal movePointRight(int n)
参数:该方法采用整数类型的一个参数n,该参数n是要求将小数点向右移动的位数。
返回值:该方法返回相同的BigDecimal值,并将小数点向右移动n位。
异常:如果刻度溢出,则该方法引发ArithmeticException。
例子:
Input: value = 2300.9856, rightshift = 3Output: 2300985.6Explanation:After shifting the decimal point of 2300.9856 by 3 places to right,2300985.6 is obtained.Alternate way: 2300.9856*10^(3)=2300985.6 Input: value = 35001, rightshift = 2Output: 3500100
以下示例程序旨在说明BigDecimal的movePointRight()方法:
// Program to demonstrate movePointRight() method of BigDecimal import java.math.*; public class GFG { public static void main(String[] args) { // Create BigDecimal object BigDecimal bigdecimal = new BigDecimal("2300.9856"); // Create a int i for decimal right move distance int i = 3; // Call movePointRight() method on BigDecimal by shift i BigDecimal changedvalue = bigdecimal.movePointRight(i); String result = "After applying decimal move right by move Distance " + i + " on " + bigdecimal + " New Value is " + changedvalue; // Print result System.out.println(result); } }
输出:
After applying decimal move right by move Distance 3 on 2300.9856 New Value is 2300985.6
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~