掌握Java BigDecimal:精确计算的终极指南
日常工作里, 碰到了需要具备一定精度的计算情况, 在这个时候, 用到了类, 这篇文章记载学习它的运用方法。1.引言在工作中需要用到这是需要使用。先看下面代码( args).out.(0.2 0.1);.out.(0.3 - 0.1);.out.(0.2 * 0.1);.out.(0.3 / 0.1);运行结果如下你觉得你看错了, 然而结果确确实实就是如此。那问题究竟存于何处呢? 缘由在于我们所用的计算机是以二进制运行的。浮点数没办法借助二进制实现精确呈现。我们的CPU对浮点数的表示涵盖两个部分, 分别是指数和尾数, 这般的表示方式通常都会致使精度有所丧失, 部分浮点数运算同样会引发一定的误差情况。举例而言, 2.4的二进制表示并非精准的2.4。相反地, 最为接近它的二进制表示居然是 2.。浮点数的值实际上是通过一个特定的数学公式运算得出的。实际上, java当中的float仅仅能够用以开展科学计算或者工程计算, 于大多数的商业计算里, 通常会采用java.math.类去实施精确计算。2.构造方法1. ( val) 将表示形式转换为 *不建议使用2. (int val) 将int表示形式转换成3. ( val) 将表示形式转换成为什么不建议采用第一种构造方法呢来看例子( args) new (2); new (2.3); new (2.3);.out.( );.out.( );.out.( );运行结果如下为什么会出现这种情况呢描述JDK的情况, 参数类型为的构造方法, 其结果存在必然的不可确切预知特性。有人会觉得, 在Java里写入(0.1)所创建的数值恰好等于0.1 , 也就是非标度值1且标度为1的情况。然而, 实际上它等于0.。这是由于, 0.1没办法精准地被表示成, 或者说针对此情形, 无法被表示成任何具有有限长度的二进制小数。如此一来, 传入到构造方法里的值, 不会恰好等于0.1 , 尽管表面看上去等于这个值。2、另一方面, 构造方法具备完全的可预知性, 将“0.1”写入之后, 会创建出一个状态, 该状态恰好等同于预期的0.1。所以, 两相比较之下, 通常来讲, 优先选用构造方法是较为妥当的做法。在确实需要当作所用到的源之际, 要借助.()去达成转换, 进而借助构造方式, 或者采用其静态方式, 像下面这样。( args) .(2.3); new (.(2.3));.out.( );.out.( );结果如下3.加减乘除运算对于常用的加减乘除类提供了相应的成员方法。add( value);//加法( value);//减法( value);//乘法( value);//除法大概的用法如下( args)a new (4.5);b new (1.5);.out.(a b a.add(b));.out.(a - b a.(b));.out.(a * b a.(b));.out.(a / b a.(b));运行结果这里有一点需要注意的是除法运算.当进行除法运算时, 有可能会出现无法实现整除的情形, 犹如4.5除以1.3这般, 在此时就会产生报错, 报错内容为java.lang.: Non- ; no exact。其实方法有可以传三个参数( , int scale, int )第一参数表示除数第二个参数表示小数点后保留位数在作除法运算或者四舍五入的时候, 才会用到舍入模式, 舍入模式由第三个参数来表示, 舍模式有下面这几种。//向正无穷方向舍入//向零方向舍入//向负无穷方向舍入朝着距离最近的一边进行舍入, 若这两边对应的距离并非相等, 除非两边的距离表现为相等的情形, 要是遇此情况, 沿着向下的方向实施舍入, 就如同1.55保留一位小数后所获结果是1.5。向着距离最近的那一边进行舍入, 不过要排除两边距离相等的情况, 要是这种两边距离相等的情况出现了, 倘若保留的位数属于奇数, 那就采用一种方式, 要是保留位数是偶数, 那就采用另一种方式, 使用相应方式, 有相应使用情况。向着离其最近的那一边进行舍入, 唯有两边的距离并非相等的情形之下才可以, 要是两边的距离相等了, 那就朝着上方进行舍入, 1.55保留一位小数所得到的结果是1.6。//计算结果是精确的不需要舍入模式//向远离0的方向舍入按照各自的需要可传入合适的第三个参数。四舍五入采用需要对进行截断和四舍五入可用方法例( args)a new (4.5635);将a赋值为, 对a进行操作, 保留三位小数, 并且按照四舍五入规则进行处理。.out.(a);*减法、乘法、除法计算, 实际上最后返回的都是一个全新的对象, 这是由于减法运算与乘法运算还有除法运算所涉及的对象都是不可改变状态的那种, 在开展每一步相应运算之际, 都必然会生成一个全新的对象。( args)a new (4.5);b new (1.5);a.add(b);.out.(a); 此操作会输出4.5 , 加减乘除相应方法会返回名为一个新的对象, 并且原来的a保持不变。4.总结(1)商业计算使用。(2)尽量使用参数类型为的构造函数。(3) 所有皆是不可改变的那种情况在开展每一步运算期间均会生成一个全新对象故而于做加减乘除运算之际务必得妥善留存操作之后的数值。(4)我们常常易于忽视JDK基础层面的某些达成细微之处, 致使产生差错, 应当予以更多留意。

相关新闻

零代码微调本地大模型:LLaMA-Factory与Ollama实战指南

零代码微调本地大模型:LLaMA-Factory与Ollama实战指南

1. 项目概述:为什么“无代码”微调本地LLM现在变得触手可及? 几年前,想自己动手微调一个大语言模型,门槛高得吓人。你得是机器学习专家,熟悉PyTorch或TensorFlow的底层API,能熟练处理分布式训练&#xff0c…

2026/8/10 9:47:19 阅读更多 →
C 语言嵌入式事件驱动状态机完整教程(枚举配套)

C 语言嵌入式事件驱动状态机完整教程(枚举配套)

目录 前言 一、状态机四大核心要素 二、枚举搭配状态机的四大工程硬性优势 三、工业通用完整示例(事件驱动状态机) 代码分层设计思路 四、核心答疑:操作结构体为什么统一使用 StateMachine *sm 指针? 扩展小节:…

2026/8/11 11:59:34 阅读更多 →
Java Web开发:内置对象与BOM/DOM解析

Java Web开发:内置对象与BOM/DOM解析

1. 项目概述:Java内置对象与浏览器对象模型解析 作为Java Web开发的基础核心内容,内置对象与BOM/DOM操作是每个开发者必须掌握的技能点。我在实际教学和项目开发中发现,很多初学者虽然能写出基础功能,但对这些对象体系的底层逻辑和…

2026/8/10 9:47:18 阅读更多 →

最新新闻

AMP精准定量技术:酶学分析与药物筛选的创新平台

AMP精准定量技术:酶学分析与药物筛选的创新平台

简述 本文围绕一磷酸腺苷(AMP)作为关键代谢物和多种酶促反应产物的核心地位,系统阐述基于化学发光法的AMP定量检测技术的原理、优势与应用范围,分析其在酶活性测定、抑制剂筛选和机制研究中的独特价值。一、AMP检测在生命科学研究…

2026/8/11 12:06:29 阅读更多 →
网络空间安全:恶意软件检测与钓鱼攻击防御技术解析

网络空间安全:恶意软件检测与钓鱼攻击防御技术解析

1. 网络空间安全专业选题方向概览网络空间安全作为数字化时代的核心防御领域,其专业选题需要紧跟技术演进和威胁态势的变化。从近年来的安全事件分析,恶意软件、钓鱼攻击和网络入侵构成了当前最主要的三大威胁载体。根据Verizon《2023年数据泄露调查报告…

2026/8/11 12:06:29 阅读更多 →
比特派Bitpie生态官网完善去中心化技术日趋成熟

比特派Bitpie生态官网完善去中心化技术日趋成熟

比特派Bitpie官网持续优化官方下载站点配套服务,同步迭代底层去中心化技术,多维度完善产品生态,非托管钱包底层架构、多链协同、安全防护体系走向成熟。正版下载官方网站地址;官网下载入口地址(bit公司)板块完成升级,自动区分安卓、iOS客户端,同步提供轻量化冷钱包安装包,页面公…

2026/8/11 12:06:29 阅读更多 →
5分钟完成Windows系统激活:KMS_VL_ALL_AIO智能激活工具完全指南

5分钟完成Windows系统激活:KMS_VL_ALL_AIO智能激活工具完全指南

5分钟完成Windows系统激活:KMS_VL_ALL_AIO智能激活工具完全指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows激活问题困扰吗?每天面对烦人的激活提醒和功…

2026/8/11 12:06:29 阅读更多 →
COMSOL多孔介质热湿耦合仿真建模与实践

COMSOL多孔介质热湿耦合仿真建模与实践

1. 项目背景与核心问题热风作用下多孔介质的温湿度变化是许多工业过程中的关键问题,涉及干燥、食品加工、建筑材料等多个领域。这个现象看似简单,实则包含了复杂的多物理场耦合过程:热风流动(流体力学)多孔介质内的传热…

2026/8/11 12:06:29 阅读更多 →
DiffusionGemma:基于Gemma的文本扩散模型部署与测试指南

DiffusionGemma:基于Gemma的文本扩散模型部署与测试指南

Google DeepMind 最近开源了 DiffusionGemma,这是一个基于 Gemma 语言模型构建的文本扩散模型。它的核心价值在于,你不需要从头开始训练一个全新的扩散模型,而是可以利用现有的、强大的 Gemma 语言模型作为基础,通过特定的方法将其…

2026/8/11 12:05:29 阅读更多 →

日新闻

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/v…

2026/8/11 0:00:02 阅读更多 →
前后端分离项目中控制台与接口工具数据差异排查指南

前后端分离项目中控制台与接口工具数据差异排查指南

1. 问题现象解析:控制台与Apifox的数据差异 最近在调试一个前后端分离项目时,遇到了一个典型问题:后端服务在本地开发环境控制台能正常输出查询数据,但通过Apifox测试时却返回空结果。这种"控制台有数据,接口工具…

2026/8/11 0:00:03 阅读更多 →
AI编程实战:从Claude Code踩坑到游戏开发入门

AI编程实战:从Claude Code踩坑到游戏开发入门

1. 从“AI能帮我做游戏”到“AI让我重新学编程”最近身边不少朋友,尤其是一些非技术背景、但对游戏开发有浓厚兴趣的朋友,都在问我同一个问题:“听说现在用Claude Code这种AI编程工具,小白也能做游戏了,是真的吗&#…

2026/8/11 0:00:03 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/11 1:08:05 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/11 1:08:05 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/11 1:08:05 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/10 17:07:33 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/11 1:08:06 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/10 17:07:33 阅读更多 →