关于转BigDecimal对象时,精度问题

news2024/12/23 4:06:59
        //浮点型数值
        Double d = 0.0003d;
        //转BigDecimal对象
        BigDecimal a = new BigDecimal(d);
        System.out.println(String.format("浮点类型数字:%.4f创建BigDecimal对象并且保留多位小数并且保留多位小数时,精度会变多,结果为%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));
        d = 0.0006d;
        a = new BigDecimal(d);
        System.out.println(String.format("浮点类型数字:%.4f创建BigDecimal对象并且保留多位小数时,精度会变多,结果为%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));
        d = 0.0007d;
        a = new BigDecimal(d);
        System.out.println(String.format("浮点类型数字:%.4f创建BigDecimal对象并且保留多位小数时,精度会变多,结果为%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));
        d = 0.0008d;
        a = new BigDecimal(d);
        System.out.println(String.format("浮点类型数字:%.4f创建BigDecimal对象并且保留多位小数时,精度会变多,结果为%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));
        d = 0.0009d;
        a = new BigDecimal(d);
        System.out.println(String.format("浮点类型数字:%.4f创建BigDecimal对象并且保留多位小数时,精度会变多,结果为%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));
        d = 0.001d;
        a = new BigDecimal(d);
        System.out.println(String.format("浮点类型数字:%.4f创建BigDecimal对象并且保留多位小数时,精度有时正常,结果为%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));
        d = 0.009d;
        a = new BigDecimal(d);
        System.out.println(String.format("浮点类型数字:%.4f创建BigDecimal对象并且保留多位小数时,精度会变多,结果为%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));
        d = 0.03d;
        a = new BigDecimal(d);
        System.out.println(String.format("浮点类型数字:%.4f创建BigDecimal对象并且保留多位小数时,精度会变多,结果为%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));
        d = 0.06d;
        a = new BigDecimal(d);
        System.out.println(String.format("浮点类型数字:%.4f创建BigDecimal对象并且保留多位小数时,精度会变多,结果为%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));
        d = 0.09d;
        a = new BigDecimal(d);
        System.out.println(String.format("浮点类型数字:%.4f创建BigDecimal对象并且保留多位小数时,精度会变多,结果为%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));
        d = 0.3d;
        a = new BigDecimal(d);
        System.out.println(String.format("浮点类型数字:%.4f创建BigDecimal对象并且保留多位小数时,精度会变多,结果为%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));
        d = 0.6d;
        a = new BigDecimal(d);
        System.out.println(String.format("浮点类型数字:%.4f创建BigDecimal对象并且保留多位小数时,精度会变多,结果为%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));
        d = 0.7d;
        a = new BigDecimal(d);
        System.out.println(String.format("浮点类型数字:%.4f创建BigDecimal对象并且保留多位小数时,精度会变多,结果为%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));
        d = 0.9d;
        a = new BigDecimal(d);
        System.out.println(String.format("浮点类型数字:%.4f创建BigDecimal对象并且保留多位小数时,精度会变多,结果为%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));
        //字符串类型数字
        String str = new String("0.0003");
        //转BigDecimal对象
        a = new BigDecimal(str);
        System.out.println(String.format("字符串类型数字:%s创建BigDecimal对象并且保留多位小数时,精度正常,结果为%s",str,a.setScale(8, BigDecimal.ROUND_DOWN)));
        str = new String("0.0006");
        a = new BigDecimal(str);
        System.out.println(String.format("字符串类型数字:%s创建BigDecimal对象并且保留多位小数时,精度正常,结果为%s",str,a.setScale(8, BigDecimal.ROUND_DOWN)));
        str = new String("0.9");
        a = new BigDecimal(str);
        System.out.println(String.format("字符串类型数字:%s创建BigDecimal对象并且保留多位小数时,精度正常,结果为%s",str,a.setScale(8, BigDecimal.ROUND_DOWN)));

使用字符串数值,转bigDecimal时,精度正常.

使用浮点型转bigDecimal时,有可能出现奇怪的数字.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1874410.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高电压技术-冲击高压发生器MATLAB仿真

微❤关注“电气仔推送”获得资料(专享优惠) 冲击电压发生器是产生冲击电压波的装置,用于检验电力设备耐受大气过电压和操作过电压的绝缘性能,冲击电压发生器能产生标准雷电冲击电压波形,雷电冲击电压截波,标准操作冲击…

Spring底层原理之bean的加载方式三 用注解声明配置类 以及@Configuration 和 @Component 的区别

bean的加载方式三 用注解声明配置类 我们之前用组件扫描加上注解定义bean 实现了bean的加载 当我们又会发现这个配置文件过于繁琐 我们可以写一个类 不是配置文件而是配置类 我们接下来只需要把这句话的功能写到 配置类里面 这样书写就行 package com.bigdata1421.config;…

Git(涵盖GitHub\Gitee码云\GitLab)

Git(涵盖GitHub\Gitee码云\GitLab) 文章目录 Git(涵盖GitHub\Gitee码云\GitLab)课程介绍Git概述官网介绍版本控制介绍两种版本控制工具集中式版本控制工具分布式版本控制工具 Git工作机制代码托管中心 Git安装和客户端的使用Git常用命令设置用户签名初始化本地库查看本地库状态…

软件构造 | Design Patterns for Reuse and Maintainability

Design Patterns for Reuse and Maintainability (面向可复用性和可维护性的设计模式) Open-Closed Principle (OCP) ——对扩展的开放,对修改已有代码的封 Why reusable design patterns A design… …enables flexibility to change …

uni-appx使用form表单页面初始化报错

因为UniFormSubmitEvent的类型时 e-->detail-->value,然后没有了具体值。所以页面初始化的时候 不能直接从value取值,会报错找不到 所以form表单里的数据我们要设置成一个对象来存放 这个问题的关键在于第22行代码 取值: 不能按照点的方式取值 …

如何在Java中使用Levenshtein距离实现字符串相似度匹配

在许多应用中,我们需要根据用户输入的问题找到最匹配的已知问题。Levenshtein距离(编辑距离)是一个强大的工具,可以帮助我们衡量两个字符串之间的差异,并进一步计算它们的相似度。本文将使用一个具体的例子来展示如何在…

BUUCTF-WEB(第二天)

[极客大挑战 2019]Http 这题明显考察的是http协议,打开靶场访问什么也没有,F12来查看看控制台的html源码,直到最后那里我们才看到一个Secret.php文件4,所以直接访问即可。 回显字符串:It doesnt come from https://S…

检索增强生成 (RAG):揭开这一术语的神秘面纱并解释其带来的价值

一、介绍 如今,数据已成为新的黄金,而高效筛选这些丰富信息的能力则是成功企业脱颖而出的关键。Retrieval Augmented Generation(RAG)是创新的标杆,尤其是在知识管理领域。它不再只是为了存储信息,而是为了…

记录处理宏病毒的过程

以下是堂弟个人电脑中毒的处理过程,作为网络安全从业人员,第一次遇到宏病毒,以前只是听过过这种病毒,从未见过。 一、中毒原因 电脑使用人没有安全意识,为了玩游戏,在淘宝买了破解版的游戏,并让…

十二、Yocto集成ROS2 app程序(package)

文章目录 Yocto集成ROS2 app程序1. 添加一个ros2 package应用程序2. 添加bb文件集成app应用程序 Yocto集成ROS2 app程序 本篇文章为基于raspberrypi 4B单板的yocto实战系列的第十二篇文章: 一、yocto 编译raspberrypi 4B并启动 二、yocto 集成ros2(基于raspberrypi…

六、常用API ★ ✔

六、常用API 模块14.基础API第一章.String1.String介绍2.String的实现原理 ★3.String的创建 (无参、字符串、字符数组、字节数组)4.String 面试题【String s new String("abc")】5.字符串常见问题 第二章.String的方法1.判断方法&#xff08…

spring boot 3.0.1多模块项目使用nacos动态配置

根pom文件增加&#xff0c;spring-cloud-alibaba包管理&#xff0c;注意版本spring-boot 3.0.3&#xff0c;spring-cloud-alibaba 2022.0.0.0-RC1 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0…

次世代霍尔电磁摇杆搭配磁悬浮马达,这款手柄手感超丝滑,谷粒金刚3Pro体验

燥热的天气里&#xff0c;周末在家打上几局游戏&#xff0c;确实更容易放松身心&#xff0c;玩游戏的时候&#xff0c;键鼠、手柄一类的游戏外设特别重要&#xff0c;对我们的游戏体验影响很大&#xff0c;所以挑选起来总是格外挑剔。现在国产的游戏手柄已经今非昔比了&#xf…

单目操作符

目录 ! --- 逻辑反操作 & --- 取地址操作符 * --- 间接访问操作符&#xff08;解引用操作符&#xff09; sizeof --- 操作数的类型长度&#xff08;单位为字节&#xff09; ~ --- 对一个数的补码二进制按位取反 前置和前置-- 后置和后置-- (类型) --- 强制类型转换…

基于Java的大学生租房系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot框架&#xff0c;MVC模式 工具&#xff1a;Vscode&#xff0c;MySQL&#xff0c;B/S架构…

数据结构-分析期末选择题考点(串、数组)

竹月光中诗世界 松风影里酒生涯 目录 串的常见考法&#xff08;一&#xff09;BF算法 串的常见考法&#xff08;二&#xff09;KMP求 next数组 串的常见考法&#xff08;三&#xff09;串的概念及性质 串的常见考法&#xff08;四&#xff09;给出主串求子串数量 数组的常见…

Postman 怎么测接口?实用教程

在当前&#xff0c;API&#xff08;应用程序接口&#xff09;的使用变得越来越普遍。其中&#xff0c;HTTP/HTTPS API 是最常见的一种。无论是开发前端还是后端&#xff0c;测试 API 都是一个关键环节。Postman 是一种流行且强大的 API 测试工具&#xff0c;能够帮助开发人员轻…

【php】【mysql】【layui】 原生初级简易留言簿系统成品代码动态网站开发网页WEB浏览器端B/S结构

更多项目点击&#x1f446;&#x1f446;&#x1f446;完整项目成品专栏 【php】【mysql】【layui】 原生初级简易留言簿系统成品代码动态网站开发网页WEB浏览器端B/S结构 获取源码方式项目说明&#xff1a;文件包含&#xff1a;项目运行环境项目运行截图 获取源码方式 加Q群…

ASUS/华硕幻13 2022 GV301R系列 原厂Windows11系统

安装后恢复到您开箱的体验界面&#xff0c;带原机所有驱动和软件&#xff0c;包括myasus mcafee office 奥创等。 最适合您电脑的系统&#xff0c;经厂家手调试最佳状态&#xff0c;性能与功耗直接拉满&#xff0c;体验最原汁原味的系统。 原厂系统下载网址&#xff1a;http:…

jeecg启动微服务并注册到本地nacos

1、maven勾选环境和微服务模式&#xff0c;并刷新 2、pom文件修改nacos注册地址 3、本地启nacos gateway 和自己想要的cloud下面的模块pos sys 4、打断点测试接口&#xff0c;访问gateway端口和想要测试的地址