我正在做两个大的十进制数的减法。在减法中,它们都具有非零精度,但结果的精度为0。
据我所知,精度为0的大十进制数是不可能的。即使0的精度也为1。
精度是未标度值中的位数。例如,对于数字123.45,返回的精度为5。
(另请参阅BigDecimal、精度和比例)。
问题区域:
BigDecimal test = (centerHP.getReal().subtract(inverseScale));
centerHP. getReal()
返回从此行创建的bigDecimal
new BigDecimal(Double.toString(center.getReal()))
对于上下文<代码>中心。实数=-0.79,这是一个双精度。
所以它是有效的
new BigDecimal("-0.79")
倒标度仅为1
double scale = 1;
BigDecimal inverseScale = (BigDecimal.ONE.divide(new BigDecimal(Double.toString(scale))));
我期望test是一个值为-1.79的bigDecimal,int表示应该是-179,精度为3,刻度为2。但是,紧接着BigDecimal类中减法方法中的加法操作,我的值如下:
测试等于:
请注意,所有其他值都是正确的,只有精度似乎是错误的。
从该字段的javadoc中,0表示精度未知。
/**
* The number of decimal digits in this BigDecimal, or 0 if the
* number of digits are not known (lookaside information). If
* nonzero, the value is guaranteed correct. Use the precision()
* method to obtain and set the value if it might be 0. This
* field is mutable until set nonzero.
*
* @since 1.5
*/
private transient int precision;
方法
precision()
缓慢地确定精度。
public int precision() {
int result = precision;
if (result == 0) {
long s = intCompact;
if (s != INFLATED)
result = longDigitLength(s);
else
result = bigDigitLength(inflate());
precision = result;
}
return result;
}
问题内容: 当我在玩Java Puzzlers的代码(我没有书)时,遇到了这段代码 输出为 当我尝试将代码更改为 我仍然得到与 对于,输出 为,输出 为,输出为 为什么我不首先得到输出?我不能为此做出任何正面或反面吗?有人可以说清楚吗? 问题答案: 二进制0.1是0.00011001100110011001100110011001 ....., 因此,它不能精确地用二进制表示。根据四舍五入的位置(
我在应用程序中使用BigDecimal 作为我的数字,例如,使用 JPA。我对术语“精度”和“规模”进行了一些研究,但我不明白它们到底是什么。 有人能解释一下BigDecimal值的“精度”和“刻度”的含义吗? 谢谢!
问题内容: 如何确定整数位数和Java中类似数字的小数点后位数。 问题答案: 双精度并不总是精确的表示形式。您只能说如果将其转换为字符串,将有多少个小数位。 这仅适用于未转换为指数符号的数字。您可能会认为1.0小数点后一位或无位。
当我试图从Spark dataframe收集数据时,我得到一个错误,说明 下面是StackTrace: 警告tasksetmanager:在stage 0.0中丢失任务1.0(TID 1,10..***,executor 0):java.lang.IllegalArgumentException:requirement:Decimal precision 39在scala.predef超过最大精度
本文向大家介绍C#浮点,双精度,十进制,包括了C#浮点,双精度,十进制的使用技巧和注意事项,需要的朋友参考一下 示例 浮动 float是.NET数据类型的别名System.Single。它允许存储IEEE 754单精度浮点数。存在此数据类型mscorlib.dll,每个C#项目在创建它们时都会隐式引用该数据类型。 大致范围:-3.4×10 38至3.4×10 38 十进制精度:6-9个有效数字 记
问题内容: 我正在尝试将双精度分隔为整数和小数部分 因此,例如,数字24.4应该分为24和4。 使用此方法可为我提供以下值: 我需要十进制的值为4。 如何解决这个问题? 问题答案: 你可以做一个String 。然后Integer 取回两个整数分量。