Java日常知识积累
文章平均质量分 62
每条学习一点点
Q169625468
这个作者很懒,什么都没留下…
展开
-
day1-后续3:[java基础原理] BigDecimal
1.类 简化示例 属于java.math包,因此包含各种数学运算,abs,pow等等。 package java.math; public class BigDecimal { //值的绝对long型表示 private final transient long intCompact; //值的小数点后的位数 private final int scale; private final BigInteger intVal; //原创 2024-01-23 17:22:33 · 386 阅读 · 1 评论 -
day1-后续2:BigDecimal的浮点数运算能保证精度的原理是什么?
如十进制数:13/16=0.8125,它可以是拆成:13/16=1/2+1/4+1/16,或者直接可以看作是13个1/16所组成。而1/2,1/4,1/16这些数都是符合(1/2)^n形式的数。当第三种情况的小数出现的时候,就会出现计算的精度误差,BigDecimal的原理很简单,就是将小数扩大N倍,转成整数后再进行计算,同时结合指数,得出没有精度损失的结果。2、能分解为以(1/2)^n为单位的十进制小数,可以转化为有限位数的二进制小数。不是所有的十进制数都能转化为有限位二进制数的。加法:long类型 +原创 2024-01-23 17:16:08 · 458 阅读 · 1 评论 -
day1-后续1:BigDecimal一定不会丢失精度吗?
都知道Double会丢失精度,BigDecimal就不会么?希望你会正确使用!我们基本已经形成了常识,需要用到金钱的地方要用 BigDecimal 而不是其他,而我们也都知道浮点型变量在进行计算的时候会出现丢失精度的问题。那么,你知道其实 BigDecimal 也会丢失精度吗?而使用 BigDecimal 的背后又有什么值得去探究的地方吗?今天,告诉你,知其然,也知其所以然。输出:可以看到在 Java 中进行浮点数运算的时候,会出现丢失精度的问题。原创 2024-01-23 17:12:58 · 909 阅读 · 1 评论 -
day1:面试官:0.1+0.2等于多少?
十进制小数转成二进制,一般采用"乘2取整,顺序排列"方法,如0.625转成二进制的表示为0.101。但是,并不是所有小数都能转成二进制,如0.1就不能直接用二进制表示,他的二进制是0.000110011001100…符号位用于表示正数或负数,尾数是有效数字的部分,而阶码用于表示指数。众所周知数学上是0.1+0.2是等于0.3的,然而在大部分编程语言中却不等于0.3。BigDecimal 是一个可以实现对浮点数的运算的类,而且不会造成精度丢失。我第一次知道也是难以置信,于是就写了下图的java程序来验证。原创 2024-01-23 17:06:47 · 1052 阅读 · 1 评论 -
根据传入的 code 值来获取对应的 EnumConstType 枚举值
如果找到匹配的枚举值,则返回该枚举值;换句话说,这段代码的作用是根据传入的。其中,,,,,,,,,,,,,,,,,枚举的所有值,比较每个枚举值的。这段代码是一个静态方法,名为。它接受一个字符串参数。原创 2023-10-07 09:48:09 · 267 阅读 · 1 评论