BigDecimal类型一定不会失真吗?

不一定。
参数类型为double的构造方法的结果有一定的不可预知性,是有可能产生失真的。

public class Test1 {public static void main(String[] args) {BigDecimal b1 = new BigDecimal(123.24);System.out.println(b1);BigDecimal bstr = new BigDecimal("123.24");System.out.println(bstr);BigDecimal bint = new BigDecimal(123);System.out.println(bint);BigDecimal b2 = BigDecimal.valueOf(123.24);System.out.println(b2);}
}

在需要精确的表示两位小数时我们需要把他们转换为BigDecimal对象,然后再进行运算。

另外需要注意

使用BigDecimal(double val)构造函数时仍会存在精度丢失问题,建议使用BigDecimal(String val)

这就需要先把double转换为字符串然后在作为BigDecimal(String val)构造函数的参数。转换为BigDecimal对象

之后再进行加减乘除操作,这样精度就不会出现问题了。这也是为什么有关金钱数据存储都使用BigDecimal

BigDecimal类型一定不会失真吗?不一定。参数类型为double的构造方法的结果有一定的不可预知性,是有可能产生失真的。相关推荐

  1. php7 参数类型限定,PHP 7.2新特性:参数类型声明(附代码)

    php7.2版本具有新特性,功能和改进,可以让我们编写更好的代码,下面的文章中我将介绍php7.2中的一个新的功能:参数类型声明,话不多说,让我们来具体看看正文内容. 参数类型声明 从PHP 5开始, ...

  2. Python 函数参数有冒号 声明后有- 箭头 返回值注释 参数类型注释

    在python3.7 环境下 函数声明时能在参数后加冒号,如图: 1 def f(ham: str, eggs: str = 'eggs') -> str : 2 print("Ann ...

  3. 【EventBus】事件通信框架 ( 取消注册 | 获取事件参数类型 | 根据事件类型获取订阅者 | 移除相关订阅者 )

    文章目录 一.取消注册订阅者 二.完整代码示例 一.取消注册订阅者 取消注册操作 : 从 Map<Object, List<Class<?>>> typesBySu ...

  4. 深度解析Java可变参数类型以及与数组的区别

    这篇文章主要介绍了Java方法的可变参数类型,通过实例对Java中的可变参数类型进行了较为深入的分析,需要的朋友可以参考下. Java方法中的可变参数类型是一个非常重要的概念,有着非常广泛的应用.本文 ...

  5. 对Python参数类型详解以及学习中遇到的坑

    由于之前遇到过几次有关于参数类型的坑,以及经常容易把一些参数类型搞混淆,现在做一下有关参数类型的总结记录以及对之前踩坑经历的分析. 参数类型 首先我们列举一下有关于Python的参数类型,以及实际上的 ...

  6. java参数传入泛型类型_Java 5.0 泛型之 使用泛型统一传入的参数类型

    Java 5.0 泛型之 使用泛型统一传入的参数类型 package Demo; // 使用泛型统一传入的参数类型 class Info28 { private T var; // 此类型由外部决定 ...

  7. python冒号声明类型_Python 函数参数有冒号 声明后有- 箭头 返回值注释 参数类型注释...

    在python3.7 环境下 函数声明时能在参数后加冒号,如图: 1 def f(ham: str, eggs: str = 'eggs') -> str : 2 print("Ann ...

  8. #{}不自动改参数类型_Spring参数的自解析还在自己转换?你out了!

    背景前段时间开发一个接口,因为调用我接口的同事脾气特别好,我也就不客气,我就直接把源代码发给他当接口定义了. 没想到同事看到我的代码问:要么 get  a,b,c  要么  post [a,b,c]. ...

  9. Go 学习笔记(28)— nil(nil 不能比较、不是关键字或保留字、nil 没有默认类型、不同类型的 nil 指针是一样的、不同类型的 nil 是不能比较的、相同类型的 nil 可能也无法比较)

    在 Go 语言中,布尔类型的零值(初始值)为 false ,数值类型的零值为 0,字符串类型的零值为空字符串 "",而指针.切片.映射.通道.函数和接口的零值则是 nil . ni ...

最新文章

  1. 高速学会Mac上托管代码到github(具体解释)
  2. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 6丨寻找用户推荐人【难度简单】
  3. 2021 使用IDEA创建并编写你的第一个Maven项目【图文详解】
  4. pptx模块的图片框
  5. raspberry pi_Raspberry Pi项目旨在调节室温并改善睡眠
  6. Oracle树反向查询的优化(转载)
  7. 进程间通信---共享内存 ftok shmat shmget shmdt shmctl
  8. T-SQL笔记1:SELECT及SELECT高级应用
  9. camunda 流程执行追踪_从Activiti分裂而来的camunda BPM
  10. oracle报错ORA-01843: not a valid month
  11. 【JavaSE】黑马程序员 刘意 基础部分笔记
  12. 汇编语言指令系统——控制转移类指令
  13. 小度wifi当无线网卡
  14. 计算机微信开发中期检查表,中期检查表范例
  15. glsl 抗锯齿锯齿_什么是抗锯齿?
  16. u盘推荐知乎_u盘知乎恢复
  17. android 虚拟按键挡住布局,Android 虚拟按键遮住了页面内容解决办法
  18. 黑莓硌手的Passport变圆了
  19. 身份证识别-全方位突破,高精度,轻量级!
  20. 什么是MES生产管理和生产制造执行系统?有哪些系统模块组成?

热门文章

  1. Jass 技能模型定义(转)
  2. Unity Mono
  3. Windows 7/Vista 桌面上为何有两个隐含的 Desktop.INI
  4. HALCON示例程序sequence_diff.hdev通过两张连续图像进行车辆流量监控
  5. (转)windows下安装python及第三方库numpy、scipy、matplotlib终极版
  6. git 简单操作流程图
  7. pandas合并groupby_pandas实践之GroupBy()
  8. pandas 取excel 中的某一列_Excel快速分表(xlwings+pandas)
  9. 人工操作阶段计算机是如何工作的,管理信息系统作业参考答案
  10. 数据导出生成word附件使用POI的XWPFTemplate对象