草庐IT

malign-double

全部标签

将字节数组转换为 double 时出现 java.nio.BufferUnderflowException

我需要将bytearray转换为double。我正在使用doubledvalue=ByteBuffer.wrap(value).getDouble();但是在运行时我得到BufferUnderflowException异常Exceptioninthread"main"java.nio.BufferUnderflowExceptionatjava.nio.Buffer.nextGetIndex(Buffer.java:498)atjava.nio.HeapByteBuffer.getDouble(HeapByteBuffer.java:508)atMyclass.main(Myclass

Java 泛型 : List<Container<? >> = new LinkedList<Container<Double>>() 被禁止?

我怎么会用Java写Listlist=newLinkedList();但不是List>list=newLinkedList>();Container就像是publicclassContainer{...}这是因为我有一个接受List>的方法,我想使用Arrays.asList将参数传递给它:process(Arrays.asList(newContainer(),newContainer()));但是语言不允许这样做,因为它推断出Arrays.asList的类型成为List>,并且不能分配给List>.如果我在调用中添加一个字符串参数化容器,process(Arrays.asList(

java - 从 double 转换为 int 并不总是只删除小数部分

我正在试验我在这里找到的代码TheJavaSpecialists'Newsletter.publicclassMeaningOfLife{publicstaticStringfindOutWhatLifeIsAllAbout(){intmeaning=0;for(inti=0;i一旦我意识到compoundassignmentoperator存在隐式转换,“它打印什么”这个问题的答案就显而易见了+=.但它打印出类似:420000006或420000007,而不是(预期的)420000000(或“42”,删除尾随零后)。所以这表明从double到int的转换并不总是只是删除double的

java - 为什么在调用构造函数时将 int 隐式转换为 float 而不是 double?

我写了这段测试代码publicclassConstructorTestApplication{privatestaticStringresult;publicstaticvoidmain(String[]args){ConstructorTesttest1=newConstructorTest(0);System.out.println(result);}privatestaticclassConstructorTest{publicConstructorTest(doubleparam){result="doubleconstructorcalled!";}publicConstru

java - assertEquals(Double, Double) 和 assertEquals(double, double, delta) 之间的 Junit 区别

我有一个junit测试断言两个Double对象,具有以下内容:Assert.assertEquals(Doubleexpected,Doubleresult);这很好,然后我决定将其更改为使用原始double而不是它被弃用,除非您还提供delta。所以我想知道在这个assertEquals中使用Double对象或原始类型有什么区别?为什么使用没有增量的对象可以,但是不推荐使用没有增量的基元?Java是否在后台执行某些已考虑默认增量值的操作?谢谢。 最佳答案 没有assertmethodinJUnit带签名assertEquals(D

java - 从 java BigDecimal 转换为 double 时丢失精度

我正在使用一个完全基于double的应用程序,并且在一个将字符串解析为double的实用程序方法中遇到了问题。我找到了一个修复程序,其中使用BigDecimal进行转换解决了这个问题,但是当我将BigDecimal转换回double时又引发了另一个问题:我失去了几个精度位置。例如:importjava.math.BigDecimal;importjava.text.DecimalFormat;publicclasstest{publicstaticvoidmain(String[]args){Stringnum="299792.457999999984";BigDecimalval=n

java - 在 Apache Poi 3.7 中以特定格式在数字单元格中写入 Double 值

我需要使用特定格式在数字单元格中写入double值,我的意思是,生成的xls必须具有包含double值的数字单元格,例如:8,1。我正在尝试类似的东西:DecimalFormatdFormat=newDecimalFormat("##.#");dFormat.format(doubleValue);但是,由于格式化方法返回一个字符串,无论我是否将单元格创建为数字,它们始终表现为文本单元格。我在考虑两种选择:强制单元格表现为数字单元格。忘记DecimalFormat并使用Double类指定逗号作为小数点分隔符,但我不确定是否可行。有什么想法吗? 最佳答案

java - 将 double 转换为二进制表示?

我试图将double转换为其二进制表示,但使用此Long.toBinaryString(Double.doubleToRawLongBits(d))没有帮助,因为我有大量数字,Long不能不存储它们,即2^900。 最佳答案 Long.toBinaryString(Double.doubleToRawLongBits(d))似乎工作正常。System.out.println("0:0b"+Long.toBinaryString(Double.doubleToRawLongBits(0D)));System.out.println("

java - 给定浮点值,从 double 到 float 的可能有损转换?

这个问题在这里已经有了答案:Whatdoes"possiblelossyconversion"meanandhowdoIfixit?(1个回答)whyfisplacedafterfloatvalues?(9个回答)关闭2年前。如果我没记错的话,“0.5”是十进制数;因此,使它成为一个浮点值。但为什么java告诉我它是double的?return语句被java检测为错误,说:“不兼容的类型:从double到float的可能有损转换”publicfloattypeDmgMultiplr(Stringtype,Stringtype2){if(type.equalsIgnoreCase("gr

java - 集合 <Double> 到 DoubleStream

这个问题在这里已经有了答案:HowdoIgetanIntStreamfromaList?(2个答案)关闭7年前。我正在寻找最优雅的方式来创建DoubleStream(用于使用总和、平均值等)来自List.目前我有这样的代码:Listdoubles=getListOfDoubles();doublesum=doubles.stream().mapToDouble(d->d).sum();也许有人可以建议更短的方法?