草庐IT

754.447905

全部标签

php - PHP 实际上使用 IEEE-754 float 吗?

IEEE-754浮点标准说:Fourmutuallyexclusiverelationsarepossible:lessthan,equal,greaterthan,andunordered.ThelastcaseariseswhenatleastoneoperandisNaN.EveryNaNshallcompareunorderedwitheverything,includingitself.然而(codepadhere):NAN;//trueINFINF;//true很明显,NAN和NAN之间(以及INF和INF之间)存在不止一种关系,而实际上应该只有一种关系。在许多(大多数?所

php - 将 IEEE 754 转换为十进制 float

我有一个我认为是单精度或double(不确定)的IEEE754,我想在PHP上将它转换为十进制。给定4个十六进制值(可能是小端格式,所以基本上颠倒顺序)4A,5B,1B,05我需要将它转换为十进制值,我知道这会非常接近4724.50073。我尝试了一些在线转换器,但它们与预期结果相去甚远,所以我显然遗漏了一些东西。如果我echo0x4A;我得到74,其他的是91、27和5。不知道从这里把它带到哪里... 最佳答案 要将其转换为float,请使用unpack。如果字节顺序不正确,您必须在解包之前自行反转它。4个字节(32位)通常表示它

c++ - 单精度 float 的第 24 个小数位在哪里? IEEE 754

今天我发现自己在做一些位操作,我决定稍微刷新一下我的浮点知识!在我看到这个之前,一切都很好:...23fractionbitsofthesignificandappearinthememoryformatbutthetotalprecisionis24bits我一遍又一遍地阅读它,但我仍然无法弄清楚第24位在哪里,我注意到一些关于binarypoint的东西,所以我假设它是尾数和指数。我不太确定,但我相信他的作者在谈论这一点:Binarypoint?|s------e-----|-------------m----------0-01111100-0100000000000000000

c++ - NAN 传播和 IEEE 754 标准

我正在设计一个新的微处理器指令集(www.forwardcom.info),我想使用NAN传播来跟踪错误。然而,IEEE754浮点标准中有许多奇怪之处阻止了这一点。首先,我想使用NAN传播而不是错误捕获的原因是我有可变长度的vector寄存器。例如,如果我有一个包含8个元素的浮点vector,第一个元素为1/0,第六个元素为0/0,那么我只会得到一个陷阱,但是如果我在计算机上运行相同的程序vector长度的一半然后我得到两个陷阱:一个用于无穷大,一个用于NAN。我希望结果独立于vector长度,因此我需要依赖NAN和INF的传播而不是捕获。NAN和INF值将通过计算传播,以便可以在最终

c++ - IEEE-754 浮点计算、相等和缩小

在下面的代码中,函数foo1、foo2和foo3是等价的。然而,当runfoo3没有从循环中终止时,是否存在这种情况的原因?templateTfoo1(){Tx=T(1);Ty=T(0);for(;;){if(x==y)break;y=x;++x;}returnx;}templateTfoo2(){Tx=T(0);for(;;){Ty=x+T(1);if(!(x!=y))break;++x;}returnx;}templateTfoo3(){Tx=T(0);while(x!=(x+T(1)))++x;returnx;}intmain(){printf("1float:%20.5f\n"

c++ - 如果硬编码 float 可以用 IEEE 754 中的二进制格式表示,它是否精确?

例如,0、0.5、0.15625、1、2、3...是从IEEE754转换而来的值。它们的硬编码版本是否精确?例如:是floata=0;if(a==0){returntrue;}总是返回真?其他例子:floata=0.5;floatb=0.25;floatc=0.125;a*b是否总是等于0.125而a*b==c总是为真?还有一个例子:inta=123;floatb=0.5;a*b总是61.5吗?或者一般来说,整数乘以IEEE754二进制float是否精确?或者一个更普遍的问题:如果值是硬编码的,并且值和结果都可以用IEEE754中的二进制格式表示(例如:0.5-0.125),那么该值是

c++ - 浮点运算是否会导致 IEC 559/IEEE 754 浮点类型的无限未定义行为

我正在通读Infinitynotconstexpr,这似乎表明创建无穷大是未定义的行为:[expr]/4:Ifduringtheevaluationofanexpression,theresultisnotmathematicallydefinedornotintherangeofrepresentablevaluesforitstype,thebehaviorisundefined.但是,如果std::numeric_limits::is_iec559equalstrue,似乎给了我们更多的保证。下面的代码利用这个保证来创建一个无限的数字。在constexpr上下文中执行时,它会导致

c++ - IEEE Std 754 Floating-Point : let t := a - b, 标准是否保证 a == b + t?

假设t,a,b都是double(IEEEStd754)变量,a,b不是NaN(但可能是Inf)。在t=a-b之后,我一定有a==b+t吗? 最佳答案 绝对不是。一个明显的例子是a=DBL_MAX,b=-DBL_MAX。那么t=INFINITY,所以b+t也是INFINITY。可能更令人惊讶的是,有些情况下会发生这种情况而没有任何溢出。基本上,它们都是a-b不准确的形式。例如,如果a是DBL_EPSILON/4并且b是-1,则a-b为1(假设默认舍入模式),a-b+b则为0。我提到第二个示例的原因是,这是在IEEE算法中强制舍入到特定

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

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

c++ - 是否有 IEEE-754 操作的开源 c/c++ 实现?

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭7年前。Improvethisquestion我正在寻找IEEE-754操作的引用实现。有这种事吗? 最佳答案 我相信C库SoftFloat和fdlibm适合您正在寻找的东西。其他包括Linux(GNUlibc,glibc)或*BSDlibc的mathfunctions.最后,CRlibm你也应该感兴趣。UlrichDrepper有一个有趣的loo