草庐IT

img_float

全部标签

c++ - 为什么在 64 位系统上 float 不是 double?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。考虑到int在32位系统上是4个字节,在64位系统上是8个字节,为什么float的处理方式不同?为什么sizeofadouble!=sizeofafloat在64位系统上?考虑到当我声明一个int(导致higherperformance)时选择了最好的native整数类型,float不应该发生同样的事情(这也导致性能提升)?相关问题:声明在32位系统上为

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算法中强制舍入到特定

c++ - 产生从负到正范围的随机 float ?

我正在尝试使用rand()在-50.0和50.0之间产生一个随机float。我到处寻找答案,但它涉及整数和%运算符。 最佳答案 试试这个:floatRandomNumber(floatMin,floatMax){return((float(rand())/float(RAND_MAX))*(Max-Min))+Min;} 关于c++-产生从负到正范围的随机float?,我们在StackOverflow上找到一个类似的问题: https://stackoverf

c++ - 使用 float 时如何获得一致的程序行为?

我正在编写一个以离散步骤进行的模拟程序。模拟由许多节点组成,每个节点都有一个与之关联的浮点值,该值在每一步都重新计算。结果可以是正数、负数或零。在结果为零或更少的情况下,会发生一些事情。到目前为止,这看起来很简单——我可以为每个节点做这样的事情:if(value然而,在我最近对程序进行了一些更改后,我重新安排了某些计算的完成顺序,因此出现了一个问题。在一个完美的世界中,在重新排列之后这些值仍然会出现相同的结果,但是由于浮点表示的不精确性,它们会出现非常轻微的不同。由于每一步的计算都取决于前一步的结果,因此随着模拟的进行,结果中的这些微小变化会累积成更大的变化。这是一个简单的示例程序,它

c++ - C++ 中的 float 转换实际上是如何完成的?( double 到 float 或 float 到 double )

所以我搜索了这个主题,但没有找到真正相关的内容。我试图查看这个简单代码背后的程序集:intmain(intargc,char*argv[]){doubled=1.0;floatf=static_cast(d);system("PAUSE");return0;}这是(使用VisualStudio2012):15:doubled=1.0;000000013FD7C16Dmovsdxmm0,mmwordptr[__real@3ff0000000000000(013FD91AB0h)]000000013FD7C175movsdmmwordptr[d],xmm016:floatf=static_

c++ - 将 float 转换为 4 uint8_t

我有一个float变量,我需要通过CAN协议(protocol)发送它。为此,必须将这个32位float分割成4个uint8_t变量。我完全不知道该怎么做。我首先考虑将float转换为int,但我在互联网上找到的一些使用cast或union的答案似乎不起作用。这是我正在尝试做的一个简单示例:floatf;uint8_tut1,ut2,ut3,ut4;//8firstbitsoffintout1//8secondbitsoffinut2...//ThenIcansendtheuint8_tthroughCAN... 最佳答案 您通常通

windows - SET 命令 - float ?

如何在Windows中使用SET命令进行浮点运算。/A代表算术,%VAR%打印VAR的数据而不是名称。例如当我这样做时:SET/AVAR="2.5+3.1"ECHO%VAR%pause我收到错误:“缺少运算符”。输出(5.6)也应该转换为float我还在忙于学习基本语法。问候,狙击手 最佳答案 SET/A命令的算术运算只对32位整数进行;但是,如果您选择多个十进制数字并在整个操作过程中保留它们,则可以使用SET/A轻松模拟定点操作。例如:REMSelecttwodecimaldigitsforalloperationsSET/AVA

windows - SDL_Image IMG_Load 在带有 : "Failed loading libpng16-16.dll:" 的 png 上失败

每当我尝试使用SDL_Image的IMG_Load函数加载PNG时,它都会给出错误Failedloadinglibpng16-16.dll:。我在正确的路径中拥有所有正确的dll,我可以使用SDL_Image的其他部分,但由于某种原因它无法加载libpngdll。我怎样才能解决这个问题?感谢您的帮助。 最佳答案 对于MinGW-w64(32位),libpng16-16.dll似乎依赖于zlib1.dll。尝试将zlib包含到您的依赖项中——将DLL包含在可执行文件运行的文件夹中。 关于w

redis zrank : Floating-Point Numbers May Lose Precision

当我推送score值长度超过16时。像10000000000000000..然后sortedset的排名出错。如何让它支持48?或者让它以某种方式支持字符串排名? 最佳答案 分数是浮点值。它们使用IEEE754标准并具有有限的精度。没有办法提高分数的精度。 关于rediszrank:Floating-PointNumbersMayLosePrecision,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

redis - 在redis中存储1300万个 float 和整数

我有一个包含1300万个float的文件,每个float都有一个关联的整数索引。文件的原始大小为80MB。我们想通过多个索引来获取浮点型数据。唯一的原因是,我需要hashmap字段和值,因为List不支持传递多个索引来获取。将它们存储为redis中的hashmap,index为field,float为value。在检查内存使用情况时,它约为970MB。存储1300万作为列表使用280MB。有没有我可以使用的优化。提前致谢运行在弹性缓存上 最佳答案 您可以通过创建索引桶与浮点值桶来进行真正好的优化。哈希在内部是非常内存优化的。因此,假