Tag: double

在Java中使用short,int,long,double,float进行转换

据我所知,当您使用Java中的算术运算在两个这些类型之间进行转换时,例如double + int,结果将是更大的类型(在本示例中,结果将是double)。 在对相同大小的2种类型进行算术运算时会发生什么? int + float和long + double会给出什么? 因为int和float每个都是4个字节,而long和double是8个字节。

如何将双倍小数舍入到小数点后一位?

我试图以#格式给我一个随机的双重回复#。#但是我得到了这个效果的值:0.9395772067578356 你如何强制一个随机双倍的十进制回报,因为我不能在.nextDouble中添加参数。 myRandomNumGenerator = new Random(); loadedValue = myRandomNumGenerator.nextDouble();

在iReport中将Double格式化为字符串

我正在做一个报告,我需要将4个变量合二为一。 如果我单独处理变量,我可以毫无问题地格式化它们。 但是当我将它们合并为一个String时,double值为0.0而不是0.00 我怎么能把它作为原件,0.00? 现在的代码如下所示: $F{someDoubleField} + “a string” + $F{anotherDoubleField} + “another string” 它打印: 0.0 a string 0.0 another string 代替: 0.00 a string 0.00 another string 请记住,iReport使用Java,所以也许,Java代码可以帮助我。

我们可以使用double来存储货币字段并使用BigDecimal进行算术运算

我知道double / float的问题,建议使用BigDecimal而不是double / float来表示货币字段。 但是双/浮动更有效且节省空间。 然后我的问题是:使用double / float来表示Java类中的货币字段是可以接受的,但是使用BigDecimal来处理算术(即在任何算术运算之前将double / float转换为BigDecimal)和等同检查? 原因是节省了一些空间。 我真的看到很多项目都使用double / float来表示货币领域。 这有什么陷阱吗? 提前致谢。

如何检查Double值是否为负数?

如标题所示,我如何检查特定的Double是否为负数。 这是我如何获得Double实例 (Double.parseDouble(data[2]) 想法,建议?

可以精确表示为浮点数/双精度的整数范围

什么是(连续的)整数的确切范围,可以表示为double(相应的浮点数?)我问的原因是因为我对这样的问题感到好奇,因为会发生精度损失。 那是 什么是最小正整数m ,使得m+1不能精确表示为double(相应的浮点数)? 什么是最大的负整数-n使得-n-1不能精确地表示为double(resp.lov)? (可能与上面相同)。 这意味着-n和m之间的每个整数都具有精确的浮点表示。 我基本上都在寻找浮点数和双打数的范围[-n, m] 。 让我们将范围限制为标准IEEE 754 32位和64位浮点表示。 我知道浮点数有24位精度,双精度数有53位(都带有隐藏的前导位),但由于浮点表示的复杂性,我正在寻找一个权威的答案。 请不要挥手! (理想的答案将certificate从0到m所有整数都是可表达的,并且m+1不是。)

从双精度中删除.0

我试图动态地在字符串中显示数字,所以如果数字有十进制显示它们但是如果不显示.0 示例:将5.5显示为5.5,将5.0显示为5 这就是我到目前为止:(答案是双倍的) double temp = answer; long temp2 = (long) temp; if (temp == temp2) { output = String.valueOf(temp2); System.out.println(output); 由于Long的最大尺寸,这项工作的罚款大约为1e18然后会出错。 那么我如何在5.43e86等更大的数字上实现这一目标

Java整数类型原语是否在转换类型的MAX_INT处“加盖”?

我试图追踪一些非常奇怪的Java行为。 我有一个涉及double的公式,但是“保证”给出一个整数答案 – 特别是一个无符号的32位整数(唉,Java不能很好)。 不幸的是,我的答案有时不正确。 最终我发现了这个问题,但对我来说这种行为仍然很奇怪:对于一个有符号的整数,直接对一个int进行double转换似乎被限制在MAX_INT ,而对于一个long则转换为一个long , 然后转换为一个int给出了预期的答案(-1;无符号32位整数的MAX INT,表示为带符号的32位整数)。 我写了一个小测试程序: public static void main(String[] args) { // This is the Max Int for a 32-bit unsigned integer double maxUIntAsDouble = 4294967295.00; long maxUintFromDoubleAsLong = (long)maxUIntAsDouble; long maxUintFromDoubleAsInt = (int)maxUIntAsDouble; int formulaTest = (int) (maxUintFromDoubleAsLong * 1.0); int testFormulaeWithDoubleCast = (int)((long) (maxUintFromDoubleAsLong * 1.0)); // […]

为什么Math.pow(x,y)算作双重?

我正在编写一个Java程序来计算在My Singing Monsters中将怪物提升到一定水平需要多少食物。 当我运行程序时,它说,“无法从double转换为int”。 有人可以解释为什么会这样吗? 这是程序。 int totalFood = 0; int level = 1; int levelMeal = 5*(Math.pow(2,level-1)); int mealNumber = 1; int levelGoal = 1; while(level != levelGoal) { if(mealNumber != 5) { mealNumber += 1; totalFood += levelMeal; } else if(mealNumber == 5) { mealNumber = 0; level += 1; } } if(level […]

Java:将(long)Object转换为double的许多方法

我有一个Object obj ,我知道它实际上很long 。 在某些Math代码中,我需要它为double 。 直接将其加倍可以安全吗? double x = (double)obj; 或者我应该先把它再做一次然后再加倍。 double x = (double)(long)obj; 我还发现了另一个(不太可读)替代方案: double x = new Long((long)obj).doubleValue(); 这样做有什么危险/含义? 解决方案总结 obj是一个Number而不是long 。 Java 6需要显式转换,例如: double x = ((Number)obj).doubleValue() Java 7具有工作魔法: double x = (long)obj 有关Java6 / 7问题的更多详细信息,请阅读有关TJ答案的讨论。 编辑:我做了一些快速测试。 两种投射方式(显式/魔术)具有相同的性能。