我试过这个: float a = 1.4123; a = a & (1 << 3); 我得到一个编译器错误,说&的操作数不能是floattypes。 当我这样做时: float a = 1.4123; a = (int)a & (1 << 3); 我正在运行程序。 唯一的事情就是按四舍五入后得到的数字的整数表示进行按位运算。 以下也是不允许的。 float a = 1.4123; a = (void*)a & (1 << 3); 我不明白为什么int可以被抛出void*但不能float 。 我正在这样做来解决在Stack Overflow问题中描述的问题如何使用遗传algorithm求解线性方程组? 。
我在javascript中有大量的数值y 。 我想通过将它们四舍五入到x的最接近的倍数并将结果转换为一个string。 我如何解决烦人的浮点精度? 例如: 0.2 + 0.4 = 0.6000000000000001 我已经尝试了两件事情: >>> y = 1.23456789 >>> x = 0.2 >>> parseInt(Math.round(Math.floor(y/x))) * x; 1.2000000000000002 和: >>> y = 1.23456789 >>> x = 0.2 >>> y – (y % x) 1.2000000000000002
我正在尝试更好地理解浮点运算,并且看到了“每个计算机科学家应该知道什么是浮点运算”的几个链接。 我仍然不明白像0.1或0.5这样的数字是如何存储在浮点数和小数。 有人能解释一下,它是如何摆放的? 我知道浮球是两个部分(即一些东西的数量)。
我正在努力比较一个bash脚本中的两个浮点数。 我必须variables,例如 let num1=3.17648e-22 let num2=1.5 现在,我只想对这两个数字做一个简单的比较: st=`echo "$num1 < $num2" | bc` if [ $st -eq 1]; then echo -e "$num1 < $num2" else echo -e "$num1 >= $num2" fi 不幸的是,我对num1的正确处理有一些问题,可能是“电子格式”。 🙁 任何帮助,提示,欢迎!
例如: 9 / 5 #=> 1 但我预计1.8 。 我怎样才能得到正确的十进制(非整数)结果? 为什么它返回1呢?
我试图在Bash脚本中划分两个图像宽度,但是bash给了我0的结果: RESULT=$(($IMG_WIDTH/$IMG2_WIDTH)) 我没有学习Bash指南,我知道我应该使用bc ,在互联网的所有例子中,他们使用bc 。 在echo我试图把我的SCALE相同的东西,但它没有奏效。 这里是我在教程中find的例子: echo "scale=2; ${userinput}" | bc 我怎样才能让Bash给我一个像0.5这样的float?
不,这不是另一个“为什么是(1 / 3.0)* 3!= 1”的问题。 最近我一直在读浮点数; 具体来说, 相同的计算如何在不同的体系结构或优化设置上给出不同的结果 。 对于存储重播的video游戏来说,这是一个问题,或者是对等networking (而不是服务器 – 客户端),这依赖于所有客户端在每次运行程序时产生完全相同的结果 – 一个小的差异浮点计算可能会导致不同机器上的游戏状态(甚至是在同一台机器上 ) 即使在“遵循” IEEE-754的处理器之间也会发生这种情况,主要是因为某些处理器(即x86)使用了双精度扩展 。 也就是说,他们使用80位寄存器来执行所有计算,然后截断为64位或32位,从而导致与使用64位或32位进行计算的机器不同的舍入结果。 我已经看到了这个问题的几个解决scheme在线,但所有的C + +,而不是C#: 使用_controlfp_s (Windows), _FPU_SETCW (Linux?)或fpsetprec (BSD)禁用双扩展精度模式(以便所有double计算使用IEEE-754 64位)。 总是使用相同的优化设置来运行相同的编译器,并要求所有用户具有相同的CPU架构(无跨平台播放)。 因为我的“编译器”实际上是JIT, 每次程序运行时可能会有不同的优化 ,所以我认为这是不可能的。 使用定点算术,并避免float和double 。 decimal可以用于这个目的,但会慢很多,并且没有一个System.Math库函数支持它。 那么, 这在C#中甚至是一个问题? 如果我只打算支持Windows(而不是Mono)呢? 如果是这样, 有没有办法强制我的程序以正常的双精度运行? 如果没有, 是否有任何库可以帮助保持浮点计算的一致性?
浮点数是否有32个二进制数字,而一个double是否有64个二进制数字? 文件太难理解了。 所有的位都翻译成有效数字吗? 或者小数点的位置占用了一些位?
在这个问题之后 ,似乎有些数字根本不能用浮点数来表示,而是近似的。 浮点数如何存储? 有不同大小的共同标准吗? 如果我使用浮点,需要注意什么types的陷阱? 他们是跨语言兼容的(即,我需要处理什么转换从python程序发送到C程序通过TCP / IP的浮点数)? -亚当
我可以列举使用double (或float )而不是decimal三个优点: 使用较less的内存。 因为浮点math运算本来就是由处理器支持的,所以速度更快。 可以代表更大范围的数字。 但是,这些优势似乎只适用于计算密集型操作,如build模软件中的操作。 当然,如果需要精确度,例如财务计算,则不应使用双打。 那么在“正常”应用程序中是否有任何实际的理由selectdouble float (或float )而不是decimal ? 编辑补充说:感谢所有的好评,我从他们那里学到了。 还有一个问题:有些人认为双打可以更精确地代表实数。 当宣布的时候,我会认为他们通常会更准确地代表他们。 但是,当浮点运算被执行时,精确度是否会降低(有时甚至是显着的)呢?