天天观点:java中BigDecimal的4个造方法 你知道吗?
1.BigDecimal 比较大小
BigDecimal a = new BigDecimal("1.00");BigDecmial b = new BigDecimal(1);想比较一下a和b的大小,一般都会用equalsSystem.out.println(a.equals(b));但是输出结果是:false原因是:BigDecimal比较时,不仅比较值,而且还比较精度?if(a.compareTo(b)==0) 结果是true比较大小可以用 a.compareTo(b) 返回值 -1 小于 0 等于 1 大于
(资料图片仅供参考)
2.BigDecimal 加减乘除
除10000 保留6位小数
if(null!=record.getString("GD_XQ_SBDL")){yd.setGdXqSbdlX(new BigDecimal(record.getString("GD_XQ_SBDL")).divide(new BigDecimal(10000), 6, RoundingMode.HALF_UP));
}
乘10000
list.get(i).setGdXqSbdl(list.get(i).getGdXqSbdlX().multiply(new BigDecimal(10000)));
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代码 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(); } };
标签:
相关推荐:
最新新闻:
- 热门看点:商标注册查询入口官网在哪里?商标注册查询入口官网地址及查询方法
- 每日消息!nix系统上加载/管理模块的命令 linux常用命令之module
- 行式数据库系统中的列式存储——Clickhouse-世界热讯
- 《碟中谍7:致命清算》海报曝光 阿汤哥再次挑战极限_世界快看
- 天天最新:《街头霸王6》开发者实机演示 “桑吉尔夫 Vs 玛丽莎”
- 天天观点:java中BigDecimal的4个造方法 你知道吗?
- 环球微速讯:在阿里巴巴图标库创建自己的工程 并导入第三方图标
- word文档中的大括号怎么打?六角括号怎么用键盘打?
- 全球快看:《速度与激情10》新海报发布 终途启程家人一直在身边
- 昆汀准备拍他“最后一部”电影了!今秋开机
- 鱼骨图绘制有什么技巧?3种类型的鱼骨图制作思维导图示例
- 《极乐迪斯科》开发商法律纠纷结束:主创还清欠款-环球新消息
- 全球观天下!PDF怎么编辑?PDF编辑方法大全
- TCP协议详解 一文读懂TCP协议段格式|每日热闻
- cr2是什么格式?CR2格式打开的方法步骤是什么?
- Cydia源是什么?Cydia源添加安装及更新步骤
- UAC功能是什么?关闭UAC功能的操作过程
- 男子称价值1.2万元AJ球鞋被调包 涉事物流:正沟通理赔
- 云存储是什么意思?云存储都有哪些用处?
- 牙克石市筑牢医保屏障助力乡村振兴
- 显卡硬件加速有什么用? 开启显卡硬件加速方法
- drivers是什么文件?drivers文件能不能删除?
- 如何卸载迈克菲软件?Mcafee卸载的方法
- PP加速器好用吗?PP加速器安装及使用步骤
- 连接打印机提示“打印处理器不存在”是什么原因?连接打印机提示打印处理器不存在解决步骤
- 变矩器是什么?变速齿轮机构的结构与工作原理
- win10系统怎么使用eZ Flash3刷BIOS?使用EZ Flash3刷BIOS步骤
- win10系统临时文件夹在哪?查找临时文件夹的步骤
- 如何输入avast注册码?avast软件介绍及激活码分享
- LanHelper工具有什么功能?LanHelper工具破解教程
- 笔记本内存条怎么安装?笔记本加内存条安装方法
- 注册表数据怎样进行修改?注册表编辑器打不开有什么解决办法?
- 出现0xc0000005错误是由什么原因造成的?c0000005异常代码解决方法
- Word中省略号怎么打?Word中省略号快捷键
- 耳机有杂音是什么原因造成的?耳机插上还是外放应该怎么办?
- 电脑时间不同步怎么办?电脑时间不同步的解决方法
- 《暗黑破坏神4》终极版预告 6月6日正式发售
- 环球焦点!三人被困雪地 男子用iPhone和大疆无人机成功自救
- 硅谷银行储户排长队取款:中国一公司已取回6亿元
- 苹果MR头显6月见!
- 天天热消息:外媒:《哥谭骑士》优化大幅度改进 卡顿完全没有了
- 郝旭蕾判刑_郝旭蕾
- 壶中日月方寸乾坤 磐镭全新系列显卡即将发布
- 全球球精选!雷克萨斯推出电动SUV RZ450E
- 【独家焦点】支持100W和8K60Hz 凯宠TypeC线24.45元
- 恐怖加倍!《生化4RE》试玩好评如潮 等不及要玩正式版啦
- 监管兜底 硅谷银行倒闭存款安全
- 滚动:《地球防卫军6》首个大型DLC确定3月23日发售
- 北京特惠!联想27寸一体机6899元-全球热文
- 全球焦点!星链打电话!SpaceX准备测试这一业务
- “张译每剧嘎一个兄弟”上热搜:搭档总会壮烈牺牲
- SE区块链游戏《共生起源》首支预告 有上万角色
- 《最后生还者》第二季不会因游戏差评改剧情 尼尔不在乎那些差评:世界通讯
- 全球快资讯:PS官推“情人节送PS5告白”后续:白色情人节一起玩吗?
- 【环球时快讯】小米万兆路由器现在入手仅1699元:小米路由史上重大升级
- 【天天聚看点】13 代 i9+RTX40 系显卡,ROG 幻 16 翻转屏笔记本开售,miniLED 屏幕
- 焦点日报:美菱智能遥控茶吧机 24 小时保温,258元绝对值
- 【聚看点】冷知识:宠物猫平均寿命已增加到15年
- 《黑暗荣耀2》的蛇是真蛇!李莎拉演员:拍得很开心
- LG发布49GR85DC-B游戏显示器 32:9曲面屏
- 全球今热点:山东岚山区总工会开展心理健康服务活动
- 外网热议:《原神》是否拥有迄今为止最好的开放世界
- 《赛博朋克2077》高清重制MOD:纹理大提升!像新配了眼镜|今日报
- 《生化危机4:重制版》体验版bug:里昂一脚踢飞电锯人|世界热点
- 性价比逆天!i5-1235U迷你主机低至2258元-热资讯
- 博思云为借助亚马逊云科技赋能中国企业上云出海 连续5年营收翻番
- 半小时充电 20%,共享充电宝充电合理吗
- 把品质做到极致!MAXHUB获“全国质量信誉保障产品”“全国商用显示行业质量领先品牌”殊荣
- 拍照打卡新姿势 三星Galaxy S22系列春游必备|世界独家
- 世界看热讯:小岛秀夫晒与马东锡合影:还收到了比兜战神的亲笔签名
- 生财有方 网友使用AI软件生成美女相集轻松赚得外快
- 杰仕登电玩嘉年华3月18正式开跑!多款新作试玩、舞台活动、赠品等待着您前来共襄盛举!
- AMD RX7900XT显卡价格持续下跌 瀚铠型号降至6299元:环球今日报
- 气温回暖带动户外露营热潮 焕新拍照手机随手记录露营美景_每日播报
- 开启电竞新纪元!AGON爱攻OLED显示器AG276QZD重磅来袭!_每日播报