Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.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_Bigdecimal - Fatal编程技术网

在java中,大十进制精度零意味着什么

在java中,大十进制精度零意味着什么,java,bigdecimal,Java,Bigdecimal,在java中,我将500视为BigDecimal。 我变成了{UnscaledValue=5@Scale=-2@Precision=0} 我真的不明白为什么精度是0。 我想可能是1。 有人能解释一下吗?用最简单的方法构造的500的精度是3 scala> new java.math.BigDecimal("500").precision() res0: Int = 3 如果您做了一些不同的事情,您必须显示代码,以便我们知道您做了什么 精度的含义来自: 精度是未标度值中的位数。零值的精度为1

在java中,我将500视为BigDecimal。 我变成了
{UnscaledValue=5@Scale=-2@Precision=0}
我真的不明白为什么精度是0。 我想可能是1。
有人能解释一下吗?

用最简单的方法构造的500的精度是3

scala> new java.math.BigDecimal("500").precision()
res0: Int = 3
如果您做了一些不同的事情,您必须显示代码,以便我们知道您做了什么

精度的含义来自:

精度是未标度值中的位数。零值的精度为1


以最直接的方式构造的500的精度为3

scala> new java.math.BigDecimal("500").precision()
res0: Int = 3
如果您做了一些不同的事情,您必须显示代码,以便我们知道您做了什么

精度的含义来自:

精度是未标度值中的位数。零值的精度为1


让我们看看你的代码plz。你有什么需要知道的,或者只是好奇(我也会好奇)的原因吗?我投票结束这个问题,因为没有代码,你不清楚你在问什么。这可能是一个很好的问题,但它需要代码。请向我们展示你的代码。你需要知道的原因是什么,或者只是好奇(我也很好奇)?我投票结束这个问题,因为没有代码,你不清楚你在问什么。这可能是一个好问题,但它需要代码。如果刻度为-2,而unscaledValue为5,那么它显然存储为5*10^2。那么,精度应该是1,不是0,也不是3。我也得到3。我还尝试了新的BigDecimal(500.0)
,预测值仍然是3,刻度为0。我仍然没有弄清楚OP如何可能获得0的精度。@OleV.V:不要从浮点类型(double)实例化BigDecimal。但是如果你这样做了,比如说,
x=newbigdecimal(“5e2”)
或者类似于
x=newbigdecimal(“5”)。movePointRight(2),或者从一个简单的计算中,您可以得到
非标度值
5
,标度
-2
。所以唯一的问题是:为什么精度
0
。根据定义,它应该是
1
。我想说的是:他如何得到
无标度值
5
标度
-2
并不重要。它是一个有效的大十进制数,表示数字500,其
精度()
不应为
3
,而应为
1
。感谢您的建议,@RudyVelthuis。关于
BigDecimal
,你显然比我知道得多。然而,对于3的精度,我承认我仍然比你更相信我的Java安装(对于0的精度,我开始相信OP犯了一个错误,我从来没有从他的
BigDecimal
-现在我坦率地说近乎粗鲁)。如果标度是-2,而非标度值是5,然后它显然被存储为5*10^2。那么,精度应该是1,不是0,也不是3。我也得到3。我还尝试了新的BigDecimal(500.0)
,预测值仍然是3,刻度为0。我仍然没有弄清楚OP如何可能获得0的精度。@OleV.V:不要从浮点类型(double)实例化BigDecimal。但是如果你这样做了,比如说,
x=newbigdecimal(“5e2”)
或者类似于
x=newbigdecimal(“5”)。movePointRight(2),或者从一个简单的计算中,您可以得到
非标度值
5
,标度
-2
。所以唯一的问题是:为什么精度
0
。根据定义,它应该是
1
。我想说的是:他如何得到
无标度值
5
标度
-2
并不重要。它是一个有效的大十进制数,表示数字500,其
精度()
不应为
3
,而应为
1
。感谢您的建议,@RudyVelthuis。关于
BigDecimal
,你显然比我知道得多。然而,对于3的精度,我承认我仍然比你更相信我的Java安装(对于0的精度,我开始相信OP犯了一个错误,我从来没有从他的
BigDecimal
中得到过0的精度,现在我坦率地说,这近乎粗鲁)。