Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 大十进制、精度和比例_Java_Jpa_Scale_Precision_Bigdecimal - Fatal编程技术网

Java 大十进制、精度和比例

Java 大十进制、精度和比例,java,jpa,scale,precision,bigdecimal,Java,Jpa,Scale,Precision,Bigdecimal,我在应用程序中使用BigDecimal作为我的数字,例如,在JPA中。我做了一些关于“精度”和“尺度”的研究,但我不明白它们到底是什么 有人能给我解释一下大十进制值的“精度”和“刻度”的含义吗 @Column(precision = 11, scale = 2) 谢谢 引用: 精度是未标度值中的位数 及 如果为零或正,则刻度为小数点右侧的位数。如果为负数,则数字的未标度值乘以10,即标度的负数幂。例如,-3表示未缩放的值乘以1000 精度:有效位数总数 比例:小数点右侧的位数 有关详细信息

我在应用程序中使用BigDecimal作为我的数字,例如,在JPA中。我做了一些关于“精度”和“尺度”的研究,但我不明白它们到底是什么

有人能给我解释一下大十进制值的“精度”和“刻度”的含义吗

@Column(precision = 11, scale = 2)
谢谢

引用:

精度是未标度值中的位数

如果为零或正,则刻度为小数点右侧的位数。如果为负数,则数字的未标度值乘以10,即标度的负数幂。例如,-3表示未缩放的值乘以1000

  • 精度:有效位数总数

  • 比例:小数点右侧的位数


有关详细信息,请参见课堂文档。

从您的示例注释中,小数点后的最大数字为2,小数点前的最大数字为9(共11位):
123456789,01
A
BigDecimal
由两个值定义:任意精度整数和32位整数刻度。
BigDecimal
的值定义为

精度:

是未标度值中的位数。 例如,对于数字123.45,返回的精度为5

因此,precision表示任意精度整数的长度。以下是一些比例相同但精度不同的数字示例:

  • 12345/100000=0.12345//刻度=5,精度=5
  • 12340/100000=0.1234//刻度=5,精度=4
  • 1/100000=0.00001//刻度=5,精度=1
在数字等于零(即0.000)的特殊情况下,精度始终为1

比例:

如果为零或正,则为小数点右侧的位数。如果为负数,则数字的未标度值乘以10,即标度的负数幂。例如,-3表示未缩放的值乘以1000

这意味着“BigDecimal”的整数值乘以

以下是几个相同精度、不同比例的示例:

  • 12345,刻度为5=0.12345
  • 12345,刻度为4=1.2345
  • 12345,刻度为0=12345
  • 12345,刻度为-1=123450†
BigDecimal.toString:

BigDecimal
toString
方法根据刻度和
精度
表现不同。(感谢@RudyVelthuis指出这一点。)

  • 如果
    scale==0
    ,则只需按原样打印出整数
  • 如果
    标度<0
    ,则始终使用电子符号(例如,5标度-1产生“5E+1”)
  • 如果
    scale>=0
    precision-scale-1>=-6
    生成一个纯十进制数(例如10000000 scale 1生成“1000000.0”)
  • 否则,将使用E表示法,例如,10刻度8产生“1.0E-7”,因为
    精度-刻度-1
    等于小于-6
更多示例:

  • 19/100=0.19//整数=19,刻度=2,精度=2
  • 1/1000=0.0001//整数=1,刻度=4,精度=1

这个问题与
java.math.BigDecimal
完全无关
@javax.persistence.Column
不是JavaSE的一部分。这是JPA的主题。精度和比例是java.math.BigDecimal经常使用的术语,这是他用于计算的术语,例如JPA。他或她想知道在BigDecimal的上下文中它们是什么意思好吧。实际上,
[12345,-1]
最好用
1.2345E+5
来表示,这可能也是
ToString
将返回的内容。另外,非常好的解释。很好的例子解释@RudyVelthuis谢谢,我添加了一节解释toString方法如何决定是否使用E+符号检查,我看到我写了
toString
。这是Delphi语言,不是Java语言0.12345-这是六位数的总数,不是五位数。你能帮我吗