草庐IT

malign-double

全部标签

java - Java 中有 long double 的替代品吗?

我在阅读C中的数据类型。我发现longdouble的范围比java中的double大。对于非常大的数字,我们可以在C中使用longdouble。如果我想在java中存储相同的数字,我们必须做什么?我们可以使用哪种数据类型?doubleinjavatakes8bytes(64bits)IEEE754.itCoversarangefrom4.94065645841246544e-324dto1.79769313486231570e+308d(positiveornegative).longdoubleinctakes10bytes(80bits)谁能告诉我java中有没有longdoubl

Java : ignore single click on double click?

谁能想出一个好方法来忽略Java中伴随双击而来的单击?我希望每个行为都有不同的行为:单击在单击点上绘制十字准线双击选择屏幕上的对象,但不应不在点击点绘制十字线...任何人都可以想办法做到这一点吗?也许是某种计时器设置?一个想法赞赏:-)...是的,我知道我正在犯下最令人发指的可用性/UI失礼。编辑#2:即使这可行,但由于计时器造成的延迟令人抓狂-我放弃了这个解决方案,并使用中键单击而不是双击进行选择...编辑:谢谢cgull-这就是我在你确认没有简单的方法来做到这一点的情况下能够想出的(请注意,如果我设置计时器200的东西工作只是桃子):publicvoidmouseClicked(M

java - double 或 BigDecimal 会溢出吗?

Java8给了我们Math.addExact()对于整数而不是小数。double和BigDecimal是否可能溢出?根据Double.MAX_VALUE判断和HowtogetbiggestBigDecimalvalue我会说答案是肯定的。因此,为什么我们不为这些类型也提供Math.addExact()呢?自己检查这个最可维护的方法是什么? 最佳答案 double溢出到Infinity和-Infinity,它不会环绕。BigDecimal不会溢出,期间,它仅受计算机内存量的限制。请参阅:HowtogetbiggestBigDecima

java - 如何将 double 添加到 Integer 的 ArrayList 中? ( java )

我试图理解如何将Double值放入Integer的ArrayList中。numList是Integer的ArrayList,它的值是Double。这是代码:packagebounded.wildcards;importjava.util.ArrayList;importjava.util.List;publicclassGenericsDemo{publicstaticvoidmain(String[]args){//InvarianceWorkaroundListnumList=newArrayList();GenericsDemo.invarianceWorkaround(numL

java - 奇怪的 Java 行为 : How come adding doubles with EXACTLY two decimal places result to a double with MORE THAN two decimal places?

如果我有一个double组,每个数组都有两个小数位,通过循环将它们加在一起,然后打印出总数,结果是一个小数点后两位以上的数字。这很奇怪,因为从理论上讲,将两个数字相加,每个数字都有2个小数位且只有2个小数位,永远不会产生一个超过百分之一的非零数字。尝试执行这段代码:double[]d=newdouble[2000];for(inti=0;i在我的电脑上,打印出来的是:total:59.940000000000005,5如果我将总数四舍五入到小数点后两位,那么我得到的数字与我在计算器上手动将9.99相加六次时得到的数字相同。但这是怎么发生的,额外的小数位从何而来?我做错了什么或者(我怀疑

java - 检查两个 float/double 值是否完全相等

比较两个浮点值是否完全相等的优雅、可读且不冗长的方法是什么?虽然听起来很简单,但这是一个棘手的问题。==运算符无法为NaN完成工作,并且对零也有特殊处理:(+0.0==-0.0)->trueDouble.NaN==Double.NaN->false但我想确定两个值是否完全相同(但我不关心不同的NaN模式,因此任何NaN==任何其他NaN->true)。我可以用这段丑陋的Monster代码来做到这一点:Double.doubleToLongBits(a)==Double.doubleToLongBits(b)有没有更好的方式来写这个(并使意图显而易见)? 最佳

java - HashMap 中的 Double

我曾考虑使用Double作为HashMap的键,但我知道浮点比较是不安全的,这让我想到了。Double类的equals方法也不安全吗?如果是,则意味着hashCode方法可能也不正确。这意味着使用Double作为HashMap的键会导致不可预知的行为。谁能证实我的猜测吗? 最佳答案 简短回答:不要这样做长答案:下面是key的计算方式:实际的键将是一个java.lang.Double对象,因为键必须是对象。这是它的hashCode()方法:publicinthashCode(){longbits=doubleToLongBits(va

java - 每个 float 都可以精确地表示为 double 吗?

是否可以在double变量中准确表示float变量的每个可能值?换句话说,对于所有可能的值X,以下操作都会成功:floatf1=X;doubled=f1;floatf2=(float)d;if(f1==f2)System.out.println("Success!");elseSystem.out.println("Failure!");我怀疑没有异常(exception),或者即使有也只是针对边缘情况(例如+/-无穷大或NaN)。编辑:问题的原始措辞令人困惑(陈述了两种方式,一种会回答“否”,另一种会回答"is"相同的答案)。我已改写它以使其与问题标题相匹配。

java - 为什么 Double.parseDouble 使 9999999999999999 变为 10000000000000000?

这个问题在这里已经有了答案:HowtoresolveaJavaRoundingDoubleissue[duplicate](13个答案)关闭9年前。为什么Double.parseDouble将9999999999999999变成10000000000000000?例如:Doubled=Double.parseDouble("9999999999999999");Stringb=newDecimalFormat("#.##").format(d);System.out.println(b);正在打印10000000000000000相反,它必须显示9999999999999999或999

java - 可以将 float(或 double)设置为 NaN 吗?

注意:类似于CananintegerbeNaNinC++?我知道这没有什么实际用途,但是可以将float或double设置为NaN吗? 最佳答案 Float对象包含一个静态值,它是一个float类型,称为NaN。所以floatmyFloat=Float.NaN;给你你想要的。http://download.oracle.com/javase/6/docs/api/java/lang/Float.html#NaN 关于java-可以将float(或double)设置为NaN吗?,我们在St