草庐IT

double-byte

全部标签

java - 输出打印预初始化的 Java double 与 inline 的区别

在将构建从Java1.6升级到1.7时,我们的单元测试开始失败,因为这两个版本处理double打印尾随零的方式不同。这可以用这个例子重现:doublepreInit=0.0010d;System.out.println("pre-init:"+preInit);System.out.println("inline:"+0.0010d);Java1.6将输出:pre-init:0.0010inline:0.0010Java1.7将输出:pre-init:0.001inline:0.0010我有两个问题:为什么内联连接的打印与具有预初始化值的相同连接不同?Java1.6和1.7之间的哪些变

java - Java 7 允许从 Number 转换为 double 吗? (自动装箱)

一位同事检查了这段代码:Numbern=...;doublenr=n==null?0.0:(double)n;然后另一位同事提示说这没有编译,这正是我所期望的。然而,事实证明我已经从SVN中提取了这段代码并且一切正常。我们都在eclipse中将Java版本设置为1.7,结果代码在eclipse4.4.2(Luna)下编译正常,但在4.2.2下编译失败。我通过将转换替换为n.doubleValue()解决了这个问题。现在真正的问题是:为什么这首先会被接受?它当然应该在转换为Double而不是double时起作用,但我认为直接从Number转换为double被禁止。那么,这是同时修复的ec

java - 有效地从 byte[] 数组中提取任意长度的位序列

我正在寻找在任意位置提取任意长度(0publicabstractclassBitArray{byte[]bytes=newbyte[2048];intbitGet;publicBitArray(){}publicvoidreadNextBlock(intinitialBitGet,intcount){//substituteforreadingfromaninputstreamfor(inti=(initialBitGet>>3);i>=3;return(((bytes[byteIndex]>shift)&mask;}}staticclassVersion2extendsBitArra

java - 重新审视 IEEE-754 double (64 位浮点)与长整型(64 位整数)

我正在重新审视一个问题(Howtotestifnumericconversionwillchangevalue?),据我所知,这个问题已经完全解决了。问题是检测特定数值何时会溢出JavaScript的IEEE-754数字类型。上一个问题使用的是C#,标记的答案非常有效。现在我正在做完全相同的任务,但这次是在Java中,但它不起作用。据我所知,Java使用IEEE-754作为其double数据类型。所以我应该能够来回转换它以迫使精度损失但它往返。对此感到困惑,我开始深入研究Java,现在我真的很困惑。在C#和Java中,long的最小值和最大值是相同的:longMIN_VALUE=-92

java - Java 中的 Polygon.Double 在哪里?

我又一次在做Java图形(Graphics2D),但我注意到没有Polygon.Double或Polygon.Float类,而有Rectangle2D.Float和Rectangle2D.Double类。有人知道这是为什么吗?我只需要使用double作为点绘制一个三角形。 最佳答案 您可以使用Path2D(或Path2D.Float或Path2D.Double)以获得相同的效果。 关于java-Java中的Polygon.Double在哪里?,我们在StackOverflow上找到一个类

java - 在 java 中将 double 分成两部分 "integer & fraction"的最佳方法是什么

我试过通过以下方法分离5.6(例如):privatestaticdouble[]method(doubled){intintegerPart=0;doublefractionPart=0.0;integerPart=(int)d;fractionPart=d-integerPart;returnnewdouble[]{integerPart,fractionPart};}但是我得到的是:[0]=5.0[1]=0.5999999999999996关于在不将数字转换为字符串的情况下执行此操作,您有什么建议吗? 最佳答案 使用BigDec

Java:比 String(byte[]) 更快的替代品

我正在开发一个基于Java的二进制数据下载器。此数据通过基于文本的协议(protocol)(UU编码)传输。对于网络任务,使用了netty库。二进制数据由服务器拆分成数千个小数据包并发送到客户端(即Java应用程序)。每次收到新消息(数据)时,我都会从netty收到一个ChannelBuffer对象。现在我需要处理这些数据,除了其他任务外,我还需要检查来自服务器的包的header(比如HTTP状态行)。为此,我调用ChannelBuffer.array()来接收一个byte[]数组。然后我可以通过newString(byte[])将这个数组转换为字符串,并轻松检查(例如比较)它的内容(

java - 将 InputStream 转换为 byte[] 的最有效方法?

这个问题在这里已经有了答案:ConvertInputStreamtobytearrayinJava(34个答案)关闭9年前。ChannelBufferInputStreamresponseStream=(ChannelBufferInputStream)response.getBodyAsStream();ArrayListarrayList=newArrayList();try{while(responseStream.available()>0){arrayList.add(responseStream.readByte());}}catch(IOExceptione){e.pri

Java - Decimal Format.parse 以返回具有指定小数位数的 double 值

我希望能够将字符串转换为Double,给定格式字符串中的小数位数。所以“###,##0.000”应该给我Double到小数点后3位。编辑-为发生的事情添加了更多信息用户在UI中输入值-该值被输入到一个字符串中。规则是此值限制为小数点后3位。底层代码将值存储在数据库中,然后用于计算。因此,尾随小数位会导致计算结果略微超出预期。我有以下代码:try{//outputcurrentlocalewearerunningunder(thishappenstobe"nl_BE")System.out.println("CurrentLocaleis"+Locale.getDefault().toS

java - 将 8 个字节的小端二进制转换为 double float

我有一个逐字节读取的二进制文件。我遇到了一个8字节长的部分,其中包含一个doublefloat(小端)。我不知道如何读入它并通过掩蔽和/或转换正确计算它。(具体来说,文件类型是.LAS,但这无关紧要)。Java有什么技巧吗? 最佳答案 您可以使用ByteBuffer来自byte[]字节doubled=ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN).getDouble();从套接字ByteBufferbb=ByteBuffer.allocate(64*1024).order(