BIGDECIMAL 四舍五入等取舍问题

我输入的是1.35,但是电脑不可能取到整数,他的值如下:
初始化数据:1.350000000000000088817841970012523233890533447265625
ROUND_DOWN); 1.35
ROUND_UP); 1.36
ROUND_CEILING); 1.36
ROUND_FLOOR); 1.35
ROUND_HALF_DOWN);1.35
ROUND_HALF_EVEN);1.35
ROUND_HALF_UP); 1.35

负数情况
初始化数据:-1.350000000000000088817841970012523233890533447265625
ROUND_DOWN); -1.35
ROUND_UP); -1.36
ROUND_CEILING); -1.35
ROUND_FLOOR); -1.36
ROUND_HALF_DOWN);-1.35
ROUND_HALF_EVEN);-1.35
ROUND_HALF_UP); -1.35

常用的

四舍五入用:ROUND_HALF_UP

五舍六入:ROUND_HALF_DOWN

向下取数用:ROUND_FLOOR

原文地址:https://www.cnblogs.com/dzhou/p/9264474.html

时间: 2024-10-18 06:40:00

BIGDECIMAL 四舍五入等取舍问题的相关文章

BigDecimal四舍五入使用总结

//BigDecimal四舍五入double f1 = new BigDecimal(1).setScale(2,RoundingMode.HALF_UP).doubleValue();//转化成字符串 防止出现0.36 出一堆小数的问题.0.36转BigDecimal时按浮点数,会出现小数BigDecimal testVal = new BigDecimal(f1+""); BigDecimal test = new BigDecimal(0.1);//test=0.10000000

JAVA通过BigDecimal四舍五入解决方案和注意事项

/** * @Description: 四舍五入留2位小数 * @param valueName * @return */ public static Double formateDouble45(Double d){ if(d == null){ return 0d; } BigDecimal b = new BigDecimal(d); double f = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); return f; }

BigDecimal四舍五入保留两位小数

import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; public class NumberFormatDemo { public static void main(String[] args) { // BigDecimal // 保留两位小数 System.out.println(new BigDecimal(0.2).setScale(2, BigDecimal

BigDecimal四舍五入和转double遇到的问题,结果想不明白,是bug呢,还是另有深意,望高手指点

第一组:结果是0.03   0.02  0.02  0.02 不明白为什么? double amount=0.03;    amount = new BigDecimal(amount).setScale(2 , BigDecimal.ROUND_UP).doubleValue();    System.out.println(amount);    amount = new BigDecimal(amount).setScale(2 , BigDecimal.ROUND_DOWN).doubl

BigDecimal四舍五入

import java.math.BigDecimal; public class BigDecimalTest {    public static void main(String[] args) {        BigDecimal bg1 = new BigDecimal("0.105");        BigDecimal bg2 = new BigDecimal(0.105);        System.out.println(bg1);        System.

Java - BigDecimal四舍五入注意事项

如上图,精度后只有一位时,是五舍六入. 如上图,精度后只有第一位不为0时,也是五舍六入. 如上图,精度后至少有两位不为0时,才是四舍五入.

double,float,BigDecimal类型数值的操作

float四舍五入保留两位小数 /** * float四舍五入保留两位小数 * */ public static float formatDecimal(float n) { return (Math.round(n * 100)) / 100f; } double四舍五入保留两位小数 /** * double四舍五入保留两位小数 * */ public static double formatDecimal(double n) { return (Math.round(n * 100)) /

SFDR 参数分析

SFDR是信号系统处理中常用的一项参数,对于评估系统的噪声水平和ADC/DAC的性能有一定参考意义. SFDR,英文全称是 Spurious-Free Dynamic range,意为无杂散动态范围.SFDR是指基波强度与最大杂波或谐波的强度之比,所以SFDR值越大则说明系统的噪声水平越低,灵敏度越高. 下面我们用一个示例看下不同量化位数对SFDR的影响. matlab代码: close all;clear all;clc; %% N = 1000; %总采样数1000 t = -pi : 2*

java BigDecimal的使用和四舍五入及格式规范(精准数据)

• Java中的简单浮点数类型float和double不能够进行运算.不光是Java,在其它很多编程语言中也有这样的问题. 如果我们编译运行下面这个程序会看到什么? public   class  Test  {      public   static   void  main(String args[])  {                 System.out.println(0.05 + 0.01);         System.out.println(1.0 - 0.42);