ieee-754相关内容
我正在重新审视一个问题(如何测试数值转换是否会改变价值?),就我而言完全解决了问题是检测特定数值何时会溢出JavaScript的IEEE-754号码类型。以前的问题是使用C#,标记的答案工作正常。 现在我正在完成相同的任务,但这次在Java中,它不起作用。 AFAIK,Java使用IEEE-754作为双重数据类型。所以我应该能够来回来强制精确度的损失,但它是一次次的。在这个封闭的时候,我开始
..
是否有坏事或我不明白发生了什么? static String getRealBinary(double val){ long tmp = Double.doubleToLongBits(val); StringBuilder sb = new StringBuilder(); (long n = 64; - n> 0; tmp>> = 1) if((tmp& 1)== 0
..
当我运行时, double 大小有差异我的应用程序在32和64位环境? 如果我没有错误,在32位环境中的双倍将在0之后占用16位数,而64位中的双位将占用32位,我是对吗? 解决方案 不, IEEE 754双精度浮点数总是64位。类似地,单精度 float 总是32位。 如果您的问题是关于C#和/或。 NET(如您的标签所示),所有的数据类型大小是固定的,与您的系统架构无关。这
..
在下面的例子中是否可以除以0(或无穷大)? public double calculation(double a,double b) { if(a == b) { return 0; } else { return 2 /(a - b); } } 在正常情况下,当然不会。但是,如果 a 和 b 非常接近,可以(ab)由于计算精度而导致为 0
..
我正在使用以下函数近似一个函数的派生: def prime_x(f, x,h): 如果不是f(x + h)== f(x)而不是h == 0.0: return(f(x + h) ))/ h else: raise PrecisionError 作为一个测试,作为 f 作为 f , x 其中 fx 是: def fx(x): import mat
..
我正在寻找一种合理有效的方式来确定浮点值( double )是否可以由整型数据类型( long ,64位)。 我最初的想法是检查指数,看看它是否是 0 (或更准确地说 127 )。但是这不行,因为 2.0 将是e = 1 m = 1 ... 所以基本上,我被卡住了我有一种感觉,我可以用咬面具做到这一点,但是我现在不知道如何做到这一点。 那么我怎么能检查一下双是否可以代表一个长?
..
是否存在IEEE双重 x> 0 ,以便 sqrt(x * x)≠x 计算 x * x 的条件不会溢出或下溢到 Inf , 0 或一个非正常号码? 这是给出的, sqrt 返回最接近的可表示结果,并且 x * x (两者均按IEEE标准规定),平方根操作的计算方法如下,以无限精度计算,然后舍入为最接近的两个之一 假设如果这样的双打存在,那么可能有个例子接近1 ,我写了一个程序来找到这些反
..
System.out.println(2.14656); 2.14656 System.out.println(2.14656%2); 0.14656000000000002 WTF? 解决方案 做出预期的结果。您的期望不正确。 当您输入双精度字面值 2.14656 时,您实际获得的是最接近的双精度值,即:
..
我可以知道中有什么区别? Double.MIN_NORMAL (1.6中引入)和 Double.MIN_VALUE ? JavaDoc Double.MIN_NORMAL : 一个常量,持有 最小的正常正常值 类型 double ,2 -1022 JavaDoc Double.MIN_VALUE : 一个持有 的常量, 的最小正非零值$ double ,2 -107
..
这是一个奇怪的(至少对我来说)。此例程打印真实: double x = 11.0; double y = 10.0; if(xy == 1.0){ // print true } else { // print false } 但是这个例程打印出错误: double x = 1.1; double y = 1.0; if(xy == 0.
..
我正在进行高精度的科学计算。在寻找各种效果的最佳表现时,我不断提出想要获得下一个更高(或更低)双精度数字的原因。基本上,我想做的是在双重内部表示中增加一个最低有效位。 困难在于IEEE格式不完全统一。如果使用低级代码,并且实际上将一个添加到最低有效位,则生成的格式可能不是下一个可用的双精度。例如,它可能是一个特殊的案例编号,如PositiveInfinity或NaN。还有一些非正常值,我不声
..
我一直在试图找出原因,但我不能。 任何人可以帮助我吗? 看下面的例子。 float f; f = 125.32f; System.out.println(“f =”+ f)的值; double d =(double)125.32f; System.out.println(“d =”+ d)的值; 这是输出: f = 125.32
..
C ++标准没有讨论float和double类型的底层布局,只讨论它们应该代表的值的范围。 (对于签名的类型也是如此,这是两个赞美或别的东西) 我的问题是:用于串行化/反序列化POD类型的技术是什么并以便携式方式浮动?目前看来,唯一的办法就是将值直接表示(如“123.456”),所有体系结构中的ieee754布局不是标准的。 解决方案 Brian“Beej Jorgensen”Hal
..
浮点数据类型是单精度32位IEEE 754浮点数,双数据类型是双精度64位IEEE 754浮点数。 这是什么意思?何时应该使用float而不是double,反之亦然。 解决方案 是一个很好的开始。 总结: / p> float 以32位表示,具有1个符号位,8指数的位和23位的有效位数(或从科学计数符号:2.33728 * 10 12 ; 33728是有效位数)。
..
解决方案 可以存储在IEEE 754双重类型中最大的“无浮动”整数是什么? p>可以存储在双精度中而不会损失精度的最大/最大的整数与双精度值的最大值相同。也就是说, DBL_MAX 或约1.8 × 10 308 (如果您的双倍是IEEE 754 64位双倍)。这是一个整数它正好代表。你还想要什么? 继续,问我最大的整数是什么,这样它可以存储和所有较小的整数 IEEE 64位双精度,而不会
..
我正在开展一项比较研究,其中我必须对算法的串行和并行版本进行比较(NSGA-II算法要精确下载链接)。 NSGA-II是一种启发式优化方法,因此取决于生成的初始随机种群。如果使用CPU和GPU生成的初始种群不同,那么我不能进行公正的加速研究。 我拥有NVIDIA-TESLA-C1060卡,其计算能力为1.3。根据此版本和这个NVIDIA文档,我们不能指望sm_13设备总是产生IEEE-754
..
如果我在主机和设备(GPU arch sm_13)上执行浮点(单精度)操作,那么值是不同的? 解决方案 有关这方面的一个很好的讨论可以在白皮书。基本上: IEEE-754几乎是目前所有的功能; 这个标准,你仍然可以看到结果的差异(着名的,英特尔在内部为双精度做80位),或高优化设置与您的编译器可以改变结果 计算能力2.0及更高版本NVIDIA卡支持单精度和双精度的IEEE-754
..
PHP以其类型的杂耍而闻名。我必须承认它困惑我,我很难在比较中找出基本的逻辑/基本的东西。 例如:如果 $ a> $ b 为true, $ b> $ c 是真的,这意味着 $ a> 根据基本逻辑,我会说是 >但是我很困惑,我真的不相信PHP在这。也许有人可以提供一个例子,这不是这种情况? 我也想知道与严格小于和严格大于运算符如果左和右操作数与严格不等的值交换,它会产生任何不同:
..
为什么NaN值的比较与所有其他值的行为不同? 也就是说,与运算符==, =,的所有比较,其中一个或两个值都是NaN,返回false,与所有其他值的行为相反。 我假设这在某种程度上简化了数值计算,但我找不到明确说明的原因,甚至在 Kahan的IEEE 754状态讲座,详细讨论了其他设计决策。 这种不正常的行为在进行简单的数据处理时导致麻烦。例如,当对记录列表w.r.t.进
..
我刚刚听说,iphone不能做双重本能,因此使它们比常规浮动慢得多。 这是真的吗?证据? 我对这个问题很感兴趣,因为我的程序需要高精度计算,我必须妥协速度。 解决方案 iPhone可以在硬件中进行单精度和双精度算术。在1176(原始iPhone和iPhone3G)上,它们以大致相同的速度运行,尽管您可以在缓存中安装更多的单精度数据。在Cortex-A8(iPhone3GS,iP
..