首页 文章
  • 281 votes
     answers
     views

    为什么有些浮点数<整数比较慢四倍?

    将浮点数与整数进行比较时,某些值对的评估时间比其他类似值的值要长得多 . 例如: &gt;&gt;&gt; import timeit &gt;&gt;&gt; timeit.timeit(&quot;562949953420000.7 &lt; 562949953421000&quot;) # run 1 million times 0.5387085462592742 但是如果浮点数或整数变...
  • 459 votes
     answers
     views

    如何处理JavaScript中的浮点数精度?

    我有以下虚拟测试脚本: function test(){ var x = 0.1 * 0.2; document.write(x); } test(); 这将打印结果 0.020000000000000004 ,而它应该只打印 0.02 (如果您使用计算器) . 据我所知,这是由于浮点乘法精度的误差 . 有没有人有一个很好的解决方案,以便在这种情况下我得到正确的结果 0.02 ?...
  • 0 votes
     answers
     views

    与IEEE-754相比,内存中的浮点模式是否按位反转?

    我写了一个程序来打印出C中浮点数的位模式 . 所以我希望得到一个标准的IEEE-754位模式,即:1符号位| 8个EXP位| 23个尾数位 当我得到输出并将结果放到IEEE-754转换器时,数字是错误的 . 当我一点一点颠倒顺序时,数字是正确的 . 所以我要问的是:我找到了一个线程,我在其中了解到该模式可能被BYTE-WISE反转,但无处可寻,我发现它完全被BIT-WISE反转 . 请问有人可以这...
  • 10 votes
     answers
     views

    机器epsilon的使用是否适合浮点相等测试?

    这是测试浮点值相等的后续行动:“精度”常量是否有标准名称? Double.Epsilon有一个非常相似的问题,即大于,小于,小于或等于,大于或等于 . 众所周知,对两个浮点值x和y的相等测试看起来应该更像这样(而不是简单的=): abs(x - y)&lt;epsilon,其中epsilon是一个非常小的值 . How to choose a value for epsilon? 显然最...
  • 1 votes
     answers
     views

    将stdin中的整数放入列表中

    我想把stdin中收到的一些浮点数放在列表中 . 但是使用以下程序只返回一个对象 . 如何将我收到的花车列入清单? 输入如下:0.1 0.1 0.3 0.4 0.1 0.4 0.2 0.1 0.1 0.2 0.5 0.05 0.15 0.1 0.2 0.6 0.1 0.1 0.1 0.1 0.5 0.2 0.2 0.05 0.05 def main(): for line in sys.stdin...
  • 63 votes
     answers
     views

    为什么C中的double会打印比C更少的十进制数字?

    我在C中有这个代码,我已经宣布0.1为double . #include &lt;stdio.h&gt; int main() { double a = 0.1; printf(&quot;a is %0.56f\n&quot;, a); return 0; } 这就是它打印的内容, a is 0.10000000000000001000000000000000000...
  • 243 votes
     answers
     views

    我什么时候应该使用double而不是decimal?

    我可以说使用 double (或 float )而不是 decimal 有三个好处: 使用较少的内存 . 更快,因为处理器本身支持浮点数学运算 . 可以代表更大范围的数字 . 但这些优势似乎只适用于计算密集型操作,例如建模软件中的操作 . 当然,在需要精确度时,不应使用双精度数,例如财务计算 . 那么在&quot;normal&quot;应用程序中选择 double (或 floa...
  • 288 votes
     answers
     views

    为什么更改总和顺序会返回不同的结果?

    为什么更改总和顺序会返回不同的结果? 23.53 + 5.88 + 17.64 = 47.05 23.53 + 17.64 + 5.88 = 47.050000000000004 Java和JavaScript都返回相同的结果 . 据我所知,由于浮点数用二进制表示的方式,一些有理数(如1/3 - 0.333333 ......)无法精确表示 . 为什么简单地改变元素的顺序会影响...
  • 87 votes
     answers
     views

    任何JVM的JIT编译器都会生成使用向量化浮点指令的代码吗?

    假设我的Java程序的瓶颈确实是计算一堆矢量点积的一些紧密循环 . 是的我已经分析过,是的,它是瓶颈,是的,它是重要的,是的,这就是算法的方式,是的,我运行Proguard来优化字节码等 . 这项工作基本上是点产品 . 在,我有两个 float[50] ,我需要计算成对产品的总和 . 我知道存在处理器指令集以快速和批量地执行这些操作,如SSE或MMX . 是的我可以通过在JNI中编写一些本机代码来...
  • 6 votes
     answers
     views

    确定浮点平方根

    如何确定浮点数的平方根? Newton-Raphson方法是一种好方法吗?我也没有硬件平方根 . 我也没有硬件鸿沟(但我实现了浮点除法) . 如果可能的话,我宁愿尽可能减少分歧的数量,因为它们太贵了 . 另外,应该是减少迭代总数的初始猜测??? 非常感谢!
  • 37 votes
     answers
     views

    将Haskell Word32 / 64中的IEEE 754浮点转换为Haskell Float / Double

    问题 在Haskell中, base 库和Hackage包提供了几种将二进制IEEE-754浮点数据转换为提升的 Float 和 Double 类型的方法 . 但是,这些方法的准确性,性能和可移植性尚不清楚 . 对于旨在(反)序列化跨平台二进制格式的GHC目标库,处理IEEE-754浮点数据的最佳方法是什么? 方法 这些是我在现有库和在线资源中遇到的方法 . FFI Marshaling 这是da...
  • 1 votes
     answers
     views

    32位,64位和80位浮点IEEE-754的可表示值范围?

    在C标准中它说浮动文字: 如果缩放值不在其类型的可表示值范围内,则程序格式错误 . 缩放值是重要部分乘以10 ^指数部分 . 在x86-64下: float 是单精度IEEE-754 double 是双精度IEEE-754 long double 是80位扩展精度IEEE-754 在这种情况下,这三种类型中每种类型的可重复值的范围是多少?这记录在哪里?或者如何计算?
  • 1 votes
     answers
     views

    计算此平方根时,什么被接受为IEEE-754正确的结果?

    我有一个Newton-Raphson平方根算法,我使用它计算输入值的单精度平方根 . 然而,使用我输入的测试平台,我发现某些输入值不会收敛到最接近实际平方根的答案 . 当我说实际平方根时,我的意思是你得到的结果比32位IEEE-754更精确 . 结果,我想知道在IEEE-754中执行平方根时所获得的正确值是什么 . 这个论坛上的一些人告诉我,最接近的值不一定是最正确的,这就是我要问的原因 . 当计...
  • 3 votes
     answers
     views

    将单精度除法实现为双精度乘法

    问题 对于实现精确IEEE 754算法的C99编译器, f , divisor 类型 float 的值是否存在 f / divisor != (float)(f * (1.0 / divisor)) ? 编辑:通过“实现精确的IEEE 754算术”我的意思是一个正确定义FLT_EVAL_METHOD为0的编译器 . 上下文 提供符合IEEE 754标准的浮点的C编译器只能通过单次精度乘以逆来用常量...
  • 1 votes
     answers
     views

    FPU - 符合IEEE 754-2008标准的加法器功能

    我正在尝试开发一个FPU(符合ieee 754)作为毕业项目,我在sum函数方面遇到了一些麻烦 . 在过去的两周里,我正在调查并在纸上进行一些操作(其中很多),目的是了解这个标准是如何工作的 . 所以,这是一个问题....我很困惑,因为当我用相同的符号执行数字添加时,我得到了正确的结果但是在添加符号相反的数字时我遇到了问题 . 例如,添加-1200.23和500.125 . ieee 754-2...
  • 2 votes
     answers
     views

    IEEE-754:“最小”溢出条件

    Before I start, just some background information: 我正在使用编译器标准数学库(符合IEEE-754)在Keil uVision3中编译的ARM7微控制器(LPC2294 / 01)上运行裸机应用程序 . The issue: I 'm having trouble wrapping my head around what exactly cons...
  • 0 votes
     answers
     views

    如何在verilog中进行(ieee 754浮点)有效分割

    我正在尝试在Verilog中编写IEEE 754单精度浮点除法格式的代码,然后合成以便能够在ZedBoard上实现它下面的一个显示了IEEE 754除法的计算公式 X3= (X1/X2) = ((-1)^S1 (M1 x 2E1)) / ((-1) S2 (M2 x 2E2)) = (-1)^S3 (M1/M2) 2 (E1-E2) Here how to find ...
  • 18 votes
     answers
     views

    如何使用浮点数进行舍入

    关于IEEE-754单精度浮点,你如何执行舍入到最近,在所需位置(默认和最常见的模式)中绕到最近的偶数位? 基本上我有保护位,圆位和粘滞位 . 因此,如果我们将它们组成一个向量并将其称为GRS,则以下规则适用: 如果 G = 0 ,向下舍入(什么都不做) 如果 G = 1 , RS == 10 或 RS == 01 ,向上舍入(向尾数添加一个) if GSR = 111 ,round...
  • 29 votes
     answers
     views

    任何真实的CPU都不使用IEEE 754吗?

    我正在优化数值/统计库的排序函数,基于这样的假设:在过滤掉任何NaN并进行一点点调整之后,可以将浮点数作为32位整数进行比较而不改变结果,并且可以将双精度数据进行比较64位整数 . 这似乎加快了将这些数组排序在40%左右的某个位置,并且只要浮点数的位级表示是IEEE 754,我的假设就成立 . 是否存在人们实际使用的真实CPU(不包括在嵌入式设备中,这个库没有针对哪个)使用一些可能会打破这种假设的...
  • 146 votes
     answers
     views

    浮点数学在C#中是否一致?是真的吗?

    不,这不是另一个&quot;Why is (1/3.0)*3 != 1&quot;问题 . 我最近一直在读关于漂浮点的事情;具体来说, same calculation might give different results 如何在不同的架构或优化设置上 . 对于存储重放的视频游戏来说,这是一个问题,或者是peer-to-peer networked(而不是服务器 - 客户端),它依赖于每次运行...
  • 2 votes
     answers
     views

    在IEEE-754双精度中,从0到n的所有数字都是精确表示的最大整数n(没有舍入)[重复]

    这个问题在这里已有答案: Which is the first integer that an IEEE 754 float is incapable of representing exactly? 2个答案 问题如下(与 Headers 相同): IEEE-754中双精度的最大整数n是从0到n的所有数字都精确表示(没有舍入)? 我已经考虑了一段时间了,想不出正确的解决方案 . 你可以帮...
  • 0 votes
     answers
     views

    将十进制转换为单精度IEEE 754

    (-128.4875) base 10 to Single-Precision IEEE 754 将(128.4875)基数10转换为BINARY为: 1000 0000 . 0111 1100 1100 1100 1100... 二进制文件的科学记录是: 1 . 0000 0000 1111 1001 1001 1001... x 2^7 SIGN BIT是: 1 (1位) MANTISSA是 ...
  • 292 votes
     answers
     views

    为什么NaN - NaN == 0.0与英特尔C编译器?

    众所周知,NaNs在算术中传播,但我找不到任何演示,所以我写了一个小测试: #include &lt;limits&gt; #include &lt;cstdio&gt; int main(int argc, char* argv[]) { float qNaN = std::numeric_limits&lt;float&gt;::quiet_NaN(); float neg...
  • 183 votes
     answers
     views

    使用JavaScript获取数字的小数部分

    我有像 3.2 和 1.6 这样的浮动数字 . 我需要将数字分成整数和小数部分 . 例如, 3.2 的值将分为两个数字,即 3 和 0.2 获取整数部分很简单: n = Math.floor(n); 但是我无法获得小数部分 . 我试过这个: remainer = n % 2; //obtem a parte decimal do rating 但它并不总是正常工作 . 前面的代码具有以下输出:...
  • 1 votes
     answers
     views

    小数点表示不好 - ValueError:无法将字符串转换为float:'.'

    我有从美联储下载的SP500数据,一个非常简单的.csv文件,有两个字段;日期和价格 . 当我执行 pd.read_csv() 加载到数据帧时,我得到两个错误: TypeError:根据规则'safe'ValueError,无法将数组从dtype('O')转换为dtype('float64'):无法将字符串转换为float:' . ' 它似乎在告诉我小数点' . '在价格领域抛出错误 . 在将...
  • 30 votes
     answers
     views

    现代x86成本模型

    我正在编写一个带有x86后端的JIT编译器,并且随时学习x86汇编器和机器代码 . 大约20年前我使用ARM汇编程序,并对这些体系结构之间的成本模型差异感到惊讶 . 具体来说,内存访问和分支在ARM上很昂贵,但在x86上等效的堆栈操作和跳转很便宜 . 我相信现代x86 CPU比ARM内核做更多的动态优化,我发现很难预测它们的影响 . 编写x86汇编程序时要记住什么是好的成本模型?哪些指令组合便宜又...
  • 2 votes
     answers
     views

    使用带浮点指针的printf会产生错误

    当我尝试编译此代码时: void main() { float x; x=6.5; printf(&quot;Value of x is %f, address of x %ld\n&quot;, x, &amp;x); } 它给了我这个错误: pruebaso.c:在函数'main'中: pruebaso.c:5:9:警告:内置函数'printf'的不兼容隐式声明[默认启用] ...
  • 0 votes
     answers
     views

    试图了解IEEE双精度格式

    我目前正在研究数值分析,它已经引入了IEEE双精度标准 . 标志:1位 指数:11位(nmin = -1022,nmax = 1023) 尾数:53(带隐式前导位,因此只存储52个) 令我困惑的是我们如何解释这种格式的数字 . 对于正常数字,是整数的隐式前导1部分还是分数的一部分? 从我到目前为止搜索到的,我认为前导1是整数部分 . 但是,我使用的教科书提到了十进制机器号,它使用了表示 0.d1d...
  • 0 votes
     answers
     views

    如何将601.0转换为IEEE-754单精度

    我试图了解如何从十进制转换为IEEE-754单精度二进制表示 . 我编了一个随机数,恰好是601.00 我尽力弄清楚这是我得到的: 步骤01:我将601除以9(因为2 ^ 9是2的最大幂2可被我的数字整除)所以我得到了66.7778 步骤02:对于指数9 127 = 136,其为二进制的10001000 . 步骤03:符号为0 现在表示是:(缺少尾数)0 10001000 但是二进制66.7778...
  • 6 votes
     answers
     views

    如何计算任意功率/根?

    我有一个应用程序,需要将一个数字提高到一个分数幂 . 目标平台是一个FPGA,我可以得到它的FPU大小的估计,但我需要一个算法,只是为了可行性研究将数字提高到一个分数功率 . 我假设浮点数是最坏的情况,我预计在实践中我们将能够使用捷径,但是现在我想表明我们可以实施最坏情况 . 以为我会问这里,看看是否有任何常见的方法可以结账 . 我知道有这样做的软件方法,我想要一个合理有效的算法开始 . 我会担心...

热门问题