floating-point相关内容
我在写一个SSE代码到2D卷积,但SSE文档非常稀疏。 我使用_mm_dp_ps计算点积,使用_mm_extract_ps得到点积结果,但_mm_extract_ps返回一个表示浮点数的十六进制,我不知道如何将这个十六进制浮点数转换为常规浮点数。我可以使用__builtin_ia32_vec_ext_v4sf返回一个float,但我想保持与其他编译器的兼容性。 _mm_extract_p
..
在Java中处理浮点值时,调用toString()方法会给出具有正确浮点数有效数字的打印值。但是,在C ++中,通过stringstream打印一个浮点数将在5位或更少位数后舍入该值。有没有办法“漂亮打印”一个浮动的C ++到(假设)正确的有效数字的数字? 编辑:我想我被误解了。我想要的输出是动态长度,而不是固定的精度。我熟悉setprecision。如果你看看Double的java源,它计
..
我知道511除以512实际上等于0.998046875。我也知道浮点的精度是7位数。我的问题是,当我做这个数学在C + +(GCC),我得到的结果是0.998047,这是一个舍入的值。我希望只是得到截断值0.998046,我该怎么办? float a = 511.0f; float b = 512.0f; float c = a / b; 解决方案 作为 float
..
我试图对用C ++和Matlab编写的算法进行等价测试。 该算法在时间上包含某种循环,运行次数超过1000次。它具有算术运算和一些数学函数。 我手动为两个平台提供初始输入(如a = 1.767,b = 6.65,...)我检查那些输入的十六进制表示,它们是相同的。所以输入没有问题。并通过16个十进制数字的文本文件获得c ++的输出到matlab。 (我使用“setprecision(32)
..
我有这个简单的测试: double h; ... //分配h其初始值的代码,在下面使用 ... if((h> 0)&&(h //分支1 - 计算 } else { //分支2-无计算 } 我列出了我的值,因为我有一些非常奇怪的结果,例如如果: h = 1那么第一个分支到达,不明白为什么,因为如果h = 1我想要branch2计算。 我很困惑的东
..
正确测试两个浮点数是否相等是很多人,包括我,不完全理解。然而,今天,我想到了一些标准容器如何定义 operator 方面的等式。我总是看到有关平等问题的人,但从来没有与其他关系比较。甚至还有无声版本可供使用,其中包括除了平等和不平等之外的所有其他内容。 / p> 假设运算符
..
我想知道在这两种方式之间比较两个double有什么区别: double a1 = ... ; double a2 = ....; fabs(a1-a2) epsilon (fabs(a1-a2)/ a2) epsilon 有更好的方法吗? / p> 解决方案 本文相当彻底地回答你的问题,我想。您可以跳过“Epsil
..
Stack Overflow问题/答案的相关性 为什么将0.1f更改为0会将性能降低10倍? for Objective-C?如果有任何相关性,这应该如何改变我的编码习惯?有什么方法可以关闭Mac OS X上的非标准化浮点吗? 这似乎与iOS完全无关。是正确的吗? 解决方案 正如我在回复您的评论时说的: 它更多的是一个CPU而不是一个语言问题,所以它可能有 相关的Objec
..
在浮动上使用增量运算符(++)是否被认为是“坏风格”? 问题:在什么情况下使用 ++ on float variable justised and better than + = 1.0f ?如果没有用例,是否有一个相当可观的C ++风格指南,明确说明float上的++是邪恶的? 对于float ++,有效值,但为1.0。 1.0f没有特殊含义(与整数1不同)。它可能会混淆读者,使他认
..
我想使用iostream和Visual C ++从/从文本文件读取和写入NaN值。当写一个NaN值时,我得到 1.#QNAN 。但是,读回它输出 1.0 。 float nan = std: :numeric_limits :: quiet_NaN(); std :: ofstream os(“output.txt”); os
..
在我的程序中,无穷大通常出现在一个值除以零时。当我将零除零时,得到不确定性。如何在C ++中检查无限和不确定的值? 在C ++中,无穷大由1表示。不确定由-1。#IND表示。问题是如何测试一个变量是无限的还是不确定的。检查无穷大是相对直接的:你在你的特定C ++中找到无限定义。对于我的情况(VS2003),它是std :: numeric_limits :: infinity()。你必须包括
..
对于浮点值,是否保证 a + b == b + a ? 相信这在IEEE754中是保证的,然而C ++标准没有规定必须使用IEEE754。唯一相关的文本似乎来自[expr.add]#3: 二进制+运算符的结果是操作数。 数学运算“sum”是可交换的。然而,数学运算“sum”也是关联的,而浮点加法绝对不是关联的。因此,在我看来,我们不能得出结论,数学中“和”的交换性意味着这个引用指
..
Google的协议缓冲区允许您在邮件中存储浮动和双打。我浏览了实现源代码,想知道他们是如何在跨平台的方式做到这一点,我偶然发现了: inline uint32 WireFormatLite :: EncodeFloat(float value){ union {float f; uint32 i;}; f = value; return i; } inline floa
..
[有几个问题,但没有一个答案是特别明确的,有几个已经过时了当前的C ++标准]。 我的研究显示这些是用于检查浮点值是否可以转换为整数类型 T 的主要方法。 if(f> = std :: numeric_limits :: min()&& f
..
我将使用C ++做一些数学计算。输入浮点数是有效数字,但在计算后,结果值为NaN。我想跟踪NaN值出现的点(可能使用GDB),而不是在代码中插入大量的 isNan()。但是我发现,即使这样的代码,当NaN值出现时也不会触发异常。 double dirty = 0.0; double nanvalue = 0.0 / dirty; 任何人都可以建议一种跟踪NaN或将Na
..
请考虑以下C ++程序: #include using std :: cout; using std :: endl; int main(){ float x = 0.0001; float y = 0; for(int i = 0; i y + = x; } cout
..
我需要检查一个变量是否是一个整数,比如我有代码: double foobar = 3; //伪代码 if(foobar == whole) cout
..
可能重复: 为什么C没有未签名的浮动广告? 这个问题可能是非常基本的,可能早些时候回答了,但我想了解为什么C ++没有无符号浮点类型,即使浮点文字可以是有符号或无符号。 $ 3.9.1 / 8-“有三个浮点 点类型:float,double和long double。” $ b $无符号整数类型有两个重要的属性,它们区别于有符号整数类型:“移位”范围(没有负子范围,无负整数,但
..
C ++ 03标准是否保证足够小的非零整数在 double 中正确表示?如果不是,C ++ 11怎么样?注意,我不是在这里假设IEEE合规。 我怀疑答案是否,但我很想被证明是错误的。 / p> 当我说足够小时,我的意思是,由一些可以从C ++ 03的保证导出的值,可以通过 std :: numeric_limits 提供的值计算。 $ b b 编辑: 很
..
有人知道确定字符串值是否“合格”为浮点数的方便方法? BOOL IsFloat(string MyString) { ... etc ... return ... //如果float; FALSE否则 } 解决方案 t使用Boost库函数,可以像这样编写自己的isFloat函数。 #include
..