草庐IT

C++浮点精度

全部标签

java - Java的浮点实现是否还有Kahan发现的问题?

我今晚读了Kahan的几篇论文,还有他的famousrant反对Java。在我深入研究JVM规范之前,自从这方面的最初咆哮以来有什么变化吗?例如:设置舍入模式访问标志免费获得更高的精度...?谢谢,妮可。 最佳答案 教授Kahan的学生JoeDarcy成为Sun的“浮点沙皇”。他的博客条目"EverythingOldisNewAgain",是了解他为纠正问题所做的工作的更多信息的切入点。有了很大的改进。 关于java-Java的浮点实现是否还有Kahan发现的问题?,我们在StackOv

java - 用Java模拟低精度硬件

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion我正在尝试为数字精度相当低的硬件设备(最好使用Java)编写一个模拟器,并且我正在寻找一个实现基本数学运算的库。具体来说,我需要一个实现二进制浮点运算的类,并允许用户设置尾数和指数的精度。(尾数可能是8或10位,指数可能是6或8位。)我看过各种用于高精度算术的包(Apfloat、jScience、ApacheCommons包中的Dfp类),但它们似乎都存在仅支持基数1

java - IBM 到 IEEE 浮点转换

Java中是否有任何标准方法可以将IBM370(以字节形式)转换为IEEE格式?任何转换算法都会有所帮助..我尝试编写Java代码..但我不明白我哪里出错了。当我将输入作为-2.000000000000000E+02时,我得到的值为-140.0(IEEE格式)。在其他情况下,当我将输入作为3.140000000000000E+00时,我得到的值为3.1712502374909226的IEEE格式任何对此的帮助将不胜感激privatevoidconversion(){byte[]buffer=//bytestoberead(8bytes);intsign=(buffer[0]&0x80)

java - 任意预设精度小数(几乎像 BigDecimal)

我正在寻找一个java类,它将保存一个具有任意预设精度的十进制值。BigDecimal类看起来是一个很好的起点,但我希望能够将小数的大小限制为最终用户决定的大小。从字面上讲,最终用户会指定一个以10为底数的范围,我会分配足够的字节来表示该范围内的任何数字。我正在考虑拥有一个扩展BigDecimal的类。在这门课中,我将添加必要的函数来模拟预设范围内的小数。我向社区提出的问题是:有没有图书馆已经这样做了?扩展BigDecimal是否合理? 最佳答案 我会建议你在你提出的建议之间采取一种中间方式:Apfloat库是一个很好的尝试方式,查

java - 为什么不能将 Byte 对象/字节值转换为 Double 对象?从 Byte 到 Double 的转换会影响精度吗?

publicclassPrimitive{publicstaticvoidmain(String[]args){bytex=5;Doubley=(Double)x;//Error:CannotcastfrombytetoDouble.Byten=7;Doublem=(Double)n;//Error:cannotcastfromBytetoDouble.doublec=n;//workingright..."doubleisprimitiveandByteisobject".}}阻止将Byte转换为Double有什么意义?..如果我没记错的话,出于精确原因我知道DoubletoByte

java - 关于浮点型精度

我不明白这是为什么floatf=Integer.MAX_VALUE;System.out.println(Integer.MAX_VALUE);System.out.println((int)f);产生相同的行,以及为什么会这样Floatf2=(float)Integer.MAX_VALUE;System.out.println(Integer.MAX_VALUE);System.out.println(f2.intValue());我的意思是,float的尾数长度是2^23-1。它如何设法保持整数的max_value,即2^31-1? 最佳答案

java - 如何使用 Jackson 的本地化小数点分隔符反序列化浮点值

我正在用Jackson解析的输入流包含纬度和经度值,例如此处:{"name":"product23","latitude":"52,48264","longitude":"13,31822"}出于某种原因,服务器使用逗号作为产生InvalidFormatException的小数点分隔符。由于我无法更改服务器输出格式,因此我想教Jackson的ObjectMapper来处理这些情况。相关代码如下:publicstaticObjectgetProducts(finalStringinputStream){ObjectMapperobjectMapper=newObjectMapper();

java - 由于数值精度错误而违反 compareTo 传递契约的影响

我有一些数字要比较。它们代表通过不同空间的路径长度。对我来说不幸的是,一些不精确导致了错误的比较。例如,在注意到错误的效果后,我发现我在进行这样的比较:a=384.527100541296b=384.52710054129614//Notethetrailing14为了我的目的,a和b应该是相等的。我注意到guava有一个用于double的fuzzyCompare()方法,它似乎做了我想做的,忽略了一些这种精度:privatestaticfinaldoubleCOMPARISON_PRECISION=1e-10;privatestaticfinalComparatorfuzzyComp

java - 为什么在 Java 中允许双文字的任意精度?

刚从PeterLawreyspost中了解到这是有效的表达式,计算结果为true。333333333333333.33d==333333333333333.3d我的问题是,为什么允许使用不能用double表示的double文字,而不允许使用不能表示的整数文字。这个决定的理由是什么。旁注,我可以实际上触发double文字的超出范围编译错误:-)9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999

java - Java中的计时器精度

我正在为一些事情计时,我不能把它们放在一个很长的循环中。我需要给它们计时,看看它们需要多长时间才能完成,但似乎计时器在Java中的精度为15-16毫秒?我该如何解决这个问题? 最佳答案 您是否尝试过使用System.nanoTime()?来自Javadoc:Returnsthecurrentvalueofthemostpreciseavailablesystemtimer,innanoseconds.Thismethodcanonlybeusedtomeasureelapsedtimeandisnotrelatedtoanyothe