floating-point相关内容
如果我有 (float)value = 10.50 和do int new_value = $ b 什么规则会绕过数字? 方案 当浮点类型的有限值被转换为整数类型时,小数部分被舍弃(即,值被向零舍入)。 因此,在 -10.5 的情况下,它将转换为 -10 。 C ++ 11 4.9浮动积分转换[conv.fp
..
什么占了第一个数据集的添加执行时间?装配说明相同。 DN_FLUSH标志不为ON时,第一个数据集需要63毫秒,第二个数据集需要15毫秒。 DN_FLUSH标志置位时,数据集需要15毫秒,第二个集需要〜0毫秒。 因此,在这两种情况下,第一个数据集的执行时间要大得多。 有没有办法减少执行时间,使其更接近第二个数据集? 我使用C ++ Visual Studio 2005,
..
以下片段在我预期为0.29848时输出0.29847: double f = 0.298475; cout
..
今天早上我有一个小的WTF时刻。 Ths WTF可以归纳为: float x = 0.2f; float y = 0.1f; float z = x + y; assert(z == x + y); //这个断言被触发! (atleast with visual studio 2008) 原因似乎是表达式 x + y 被提升为double,并与 z 中的截断版本
..
我有一个小程序执行浮点除法为零,所以我期望SIGFPE。 #include #include #include #include #include void signal_handler(int signo){ if(signo == SIGFPE)
..
已阅读此问题我可以肯定,给定的使用具有相同输入(在相同硬件上,用相同编译器编译)的浮点算术的过程应该是确定性的。我正在看一个这样的情况,这不是真的,并试图确定是什么可能造成这种情况。 我编译了一个可执行文件,我喂它完全相同的数据,运行在单个机器(非多线程),但我得到的大约3.814697265625e-06的错误,仔细googling后,我发现实际上等于1/4 ^ 9 = 1/2 ^ 18
..
在C ++中,我有一个float / double变量。 当用cout打印时,结果字符串是以句点分隔的。 cout 3.1415 有一种简单的方法强制双面打印逗号? cout 3,1415 解决方案 imbue )code> code> code> code
..
请考虑以下C ++代码: double someZero = 0; std :: cout
..
我目前正在查看执行多精度浮动的代码点算术。为了正确地工作,该代码需要将值在精确定义的点处降低到其最终精度。因此,即使中间结果计算为 80位扩展精度浮点寄存器,在某些时候它也必须则舍入为 64位double 用于后续操作。 代码使用宏 INEXACT 描述此要求,但没有完美的定义。 gcc手动提及 -fexcess-precision = standard 作为强制转换和赋值操作的精确定义的精
..
解决方案标题是完全不说明的,输入是双值的,我想添加/减去最小的可能。 > 如果你的编译器实现了C99的数学函数/ C ++ 11,你可以使用 nextafter : #include // DBL_MAX #include // std :: nextafter double x = 0.1; //在DBL_MAX的方向上x后的可表示
..
isnormal()参考页告诉您: 确定给定的浮点数arg是否正常,即 既不为零,也不为正,无穷大,也不为NaN。 数字为零,无限或NaN清楚什么意思。但它也说subnormal。在IEEE754标准中,浮点数用二进制科学记数法表示, = M × 2 e 。这里 M 是尾数, e 是指数。在数学上,您可以随时选择指数,以便1 。但是,由于在计算机表示中,指数只能具有有限范围是
..
有什么办法设置Visual Studio(只是从2008到2010年升级)破解,如果一个断言失败,每当任何浮点数变成NaN,QNAN,INF等等? 到目前为止,我刚刚使用了assert(x == x)技巧,但我宁愿隐式,所以我不必添加断言无处不在。 很奇怪,我通过google找不到这个答案。一些关于“浮点异常”的东西,但我不知道他们是否是相同的东西,我已经尝试启用他们在Visual S
..
我有一个用C#编写的程序,有些部分是用本地C / C ++编写的。 我使用双精度计算一些值,有时结果是错误的,因为太小的精度。经过一番调查,我发现有人将浮点精度设置为24位。我的代码工作正常,当我将精度重置为至少53位(使用_fpreset或_controlfp),但我仍然需要弄清楚谁负责将精度设置为24位在第一位。 解决方案 这是由默认的Direct3D设备初始化。您可以通过传递 D3
..
当流到std输出时,我是否可以指定setprecision以舍入双精度值? ofile
..
我将一些代码从Matlab移植到C ++。 在Matlab中 format long D = 0.689655172413793(这是1.0 / 1.45) E = 2600 / D //我得到E = 3.770000000000e + 03 在C ++中 double D = 0.68965517241379315; //(这是1.0 /
..
我有一个C ++程序。在程序中的某处(难以再现,但可再现),一个caclculation导致浮点beeing设置为NaN。因为涉及NaN的浮点运算产生一个NaN,所以它的传播速度很快。 有任何方法可以设置编译器(gcc 4.4)或调试器)在浮点运算导致NaN时停止?这将是非常有用的。 谢谢! Nathan PS:可能有问题:我在ubuntu linux 10.10下工作。
..
我在C ++中使用一个基于日志的类来存储非常小的浮点值(因为这些值超出了 double 的范围)。因为我正在执行大量的乘法,这有额外的好处是将乘法转换为和。 但是,在我的算法的某一点,我需要用一个整数值除一个标准的 double ,而不是一个 * = 到基于日志的值。我为我的基于日志的类重载了 * = 运算符,右侧的值首先通过运行转换为基于日志的值, log(),然后添加到左侧的值。 因此
..
我有一个矩阵 Mat B(480,640,CV_32FC1); 包含浮动值...我想将这个矩阵写入一个文件,可以在记事本或Ms字或Excel中打开查看内部的值和存储....
..
我想在比较期间控制双精度,然后使用C ++恢复默认精度。 我打算使用 setPrecision()设置精度。 我正在做这样的事情 std :: setPrecision(math.log10(m_FTOL)); 我做一些事情,我想回来默认双重比较。 p> 我这样修改,仍然有一些错误 std: :streamsize prec = std :
..
我想知道是否有一种方法可以使用C ++中的char来表示浮点数。 例如: int main() { float test = char result = charRepresentation(test); return 0; } 我读到可能使用bitset我可以做,但我不漂亮肯定。 让我们假设我的float变量是01001010 010010
..