floating-point相关内容
说我想要一个需要两个浮动( x 和 y )的函数,使用它们的 float 表示,而是它们的位表示为32位 unsigned int 。也就是说, -495.5 的数字具有位表示 0b11000011111001011100000000000000 或 0xC3E5C000 作为 float ,我有一个 unsigned int ,具有相同的位表示(对应于十进制值 3286614016 ,我不在乎)
..
说我想要一个需要两个浮动( x 和 y )的函数,使用它们的 float 表示,而是它们的位表示为32位 unsigned int 。也就是说, -495.5 的数字具有位表示 0b11000011111001011100000000000000 或 0xC3E5C000 作为 float ,我有一个 unsigned int ,具有相同的位表示(对应于十进制值 3286614016 ,我不在乎)
..
根据 IEEE 754-2008 ,有 有三种二进制浮点基本格式(可以是使用32,64或128位编码的 )和两个十进制浮点基本 格式(可以使用64或128位编码)。 这个图表在它下面。在C ++中,我相信float和double是单精度和双精度(binary32和binary64)。什么类/结构可以用于decimalX和有什么我可以用于binary128?这些类/结构是标准的还是非
..
我正在寻找/编写一个16位浮点数的C ++实现,用于OpenGL顶点缓冲区(纹理坐标,法线等)。以下是我到目前为止的要求: 必须是16位(显然)。 能够使用GL_HALF_FLOAT上传到OpenGL顶点缓冲区。 必须能够表示超过-1.0 - +1.0的数字(否则,我将只使用GL_SHORT归一化)。 必须能够转换为正常的32位浮点数。 算术运算无关紧要 - 我只关心存储。 速度不
..
我经常发现自己写的最大值函数通过一个双精度数组搜索我使用这样的功能在图形显示之前标准化数据。 有更好的方法来找到双精度数组的最大值吗?有一个标准函数来找到数组中的最大值吗?这个操作有什么内在的?我记得专门的ASM指令存在于DSP芯片中。 解决方案 是的!有一个函数 std :: max_element : double arr [LENGTH ] = / * ... * /
..
当比较两个“真实”数字的相等性时,为什么我不应该使用==运算符,而应该使用什么代替? coersion和cast之间有什么区别?这是我一般的假设,当你强制一个值为另一种类型,像这样强制转换: int n = 9; return double(n)/ 5; 解决方案 使用==运算符? ,因为它可能不工作。但是不是 == 运算符是一个问题。问题
..
请考虑以下代码: #include #include #include using namespace std; template bool IsNaN(T t) { return t!= t; } int main(int argc,char ** argv) {
..
我知道使用 == 比较一个double不是一个明智的做法。然而我想知道如果检查是否双重初始化可能是危险的或不。例如,如果知道一个变量doubleVar不能为零,如果它已被初始化,是否可以这样做? Foo: :Foo(){ doubleVar = 0.0; // double type } void Foo :: Bar(){ if(doubleVar == 0){//已初始化
..
有一个简单的方法来确定浮点数的符号吗? 我尝试了这个: #include int main(int argc,char ** argv) { union { float f; char c [4]; }; f = -0.0f; std :: cout
..
我在寻找IEEE-754操作的参考实现。是否有这样的事情? 解决方案 我相信C库
..
我正在为Euler项目问题3创建一个程序,虽然这可能并不重要,结果,我目前试图让这个代码采取一个数字,并测试如果它是素数。现在,然后在我得到排除故障的功能,它给我的错误“浮点异常”输入数字后。这里是代码: int main() { int input; cout>输入; int i = input / 2; int c;
..
前面我写了一个程序,使用一些阶乘函数。我使用long double数据类型来支持“相对”大数字。 现在,我从codeblocks改为Visualstudio 2010,我想知道为什么我的程序没有工作,直到我意识到一些研究后,MS已经放弃了长双数据类型。 有什么特别的原因吗?对我来说,它看起来非常像在技术方面倒退。 有任何其他选择吗? (我也会很高兴与boost库中的替代品)。
..
我想测试一个数字 double x 是一个10的整数次幂。我可以使用cmath的 log10 然后测试 x ==(int)x ? edit:事实上,我的解决方案不工作,因为双重可以是非常大,比int大得多,也很小,像分数。 解决方案 p>查找表将是迄今为止最快和最精确的方法来做到这一点;只有大约600的10的幂可以表示为双。您可以使用哈希表,或者如果表从最小到最大排序,您可以使用二进制
..
与我的其他问题相关,我现在已经修改稀疏矩阵求解器以使用SOR(连续过松弛)方法。代码如下: void SORSolver :: step(){ float const omega = 1.0f; float const * b =& d_b(1,1), * w =& d_w(1,1),* e =& d_e(1,1) * s =& d_s(1,1),* n =& d_n(1,1)
..
Intel C ++编译器提供两个控制浮点的选项: -fp-speculation(fast / safe / strict / off) -fp-模型(精确/快/严格和源/双/扩展) 我想我明白fp-model是什么。但是什么是fp猜测,它如何与fp模型相关?我还没找到任何解释这个的英特尔文档。 解决方案 -fp-model 影响浮点计算的执行方式,并且可以更改数值结果(通
..
我只是想知道发生在幕后的事情,将double转换为int,说int(5666.1)?这是比父类的一个子类的static_cast更昂贵吗?因为int和double的表示是根本不同的,因为在过程中会创建临时表,并且也很昂贵。 解决方案任何具有本地浮点的CPU都将有一条将浮点数转换为整数数据的指令。该操作可以从几个周期到许多。通常有用于FP和整数的单独的CPU寄存器,因此您必须随后将整数移动到整
..
我看着 std :: numeric_limits :: min / max(),但它看起来'min()'返回最小的绝对值, 最低值。是否安全使用 -std :: numeric_limits :: max() IEEE 754浮点数使用一个符号位进行签名(而不是类似于下面这样的操作): 二进制补码),所以如果你确定你的编译器/平台使用该表示(非常常见),那么
..
如何从.txt档案读取浮动广告。根据每行开头的名称,我想读取不同数量的坐标。 例如: triangle 1.2 -2.4 3.0 结果应该是: float x = 1.2 / float y = -2.4 / float z = 3.0 该文件有更多的行与不同的形状,这可以更复杂,但我想如果我知道如何做其中一个我可以自己做其他。 我的代码到目前为止: #inclu
..
我有大量的数据要处理每个数据集上的数学密集型操作。它大部分类似于图像处理。然而,由于该数据是直接从物理设备读取的,所以许多像素值可能是无效的。 这使得NaN的属性表示不是数字的值,并且在算术运算上的传播非常引人注目。然而,它似乎也需要关闭一些优化,如gcc的-ffast-math,加上我们需要跨平台。我们当前的设计使用一个简单的结构,其中包含一个浮点值和一个表示有效性的bool。 看起
..
我知道这有点假设,但我想知道为什么没有语言我知道它。 例如,你想存储1/3。给程序员一个选项,指定它为1/3,存储1和3.像 struct float { int numerator; int denominator; }; 理性数字运算变得非常简单,更准确! 这将解决与浮点数的精度和存储限制相关的许多问题,我不会看到它引入任何新的问题。
..