Tag: 浮点

在Linux内核中使用浮点

我正在阅读罗伯特·洛夫(Robert Love)的“Linux内核开发”(Linux Kernel Development),我遇到了以下的一段话: 没有(简单)使用浮点 当用户空间进程使用浮点指令时,内核pipe理从整数到浮点模式的转换。 当使用浮点指令时,内核必须做的事情因体系结构而异,但内核通常会捕获一个陷阱,然后启动从整数到浮点模式的转换。 与用户空间不同的是,内核并不具备对浮点的无缝支持,因为它不能轻易陷入自身。 在内核中使用浮点需要手动保存和恢复浮点寄存器以及其他可能的杂项。 简短的回答是: 不要这样做! 除less数情况外,内核中没有浮点运算。 我从来没有听说过这些“整数”和“浮点”模式。 他们究竟是什么,为什么他们需要? 主stream硬件体系结构(如x86)上是否存在这种差别,还是特定于某些更具异国情调的环境? 从进程和内核的angular度来看,从整数到浮点模式的转换到底是什么?

我应该使用双或浮动?

在C ++中使用一个而不是另一个的优点和缺点是什么?

为什么SSE标量sqrt(x)慢于rsqrt(x)* x?

我一直在分析我们在Intel Core Duo上的一些核心math,并且在研究各种平方根的方法时,我注意到一些奇怪的事情:使用SSE标量运算,取相反的平方根并乘以它得到sqrt,比使用本地的sqrt操作码! 我用一个循环来testing它: inline float TestSqrtFunction( float in ); void TestFunc() { #define ARRAYSIZE 4096 #define NUMITERS 16386 float flIn[ ARRAYSIZE ]; // filled with random numbers ( 0 .. 2^22 ) float flOut [ ARRAYSIZE ]; // filled with 0 to force fetch into L1 cache cyclecounter.Start(); for ( int i = 0 […]

为什么我们不能用'=='来比较两个浮点数或双数

我正在阅读约书亚·布洛赫(Joshua Bloch)撰写的Effective java,而在第8条中:当重写equals时服从一般合约 , 对于浮动字段,请使用Float.compare方法; 并为双字段使用Double.compare。 由于存在Float.NaN,-0.0f和类似的双常数,需要对float和double域进行特殊的处理; 有人可以解释我为什么我们不能使用==浮点或双比较

Java浮点高精度库

哪些Java库适合浮点运算或定点运算,精度高达数千位? 他们有多高性能? 对我的一个要求是,它实现了一个乘法algorithm,它比原来的乘法algorithm要好4倍的倍数 (比较乘法algorithm )2倍的数字。

在javascript中截断(不舍入)十进制数字

我正在尝试将十进制数字截断为小数位。 像这样的东西: 5.467 -> 5.46 985.943 -> 985.94 toFixed(2)只是做了正确的事情,但是却把价值收掉了。 我不需要四舍五入的价值。 希望这是可能的JavaScript。

原始浮点值如何为-0.0? 这意味着什么?

一个原始的浮动值如何可以是-0.0? 这意味着什么? 我可以取消该function吗? 当我有: float fl; 然后fl == -0.0返回true ,那么fl == 0 。 但是,当我打印它,它打印-0.0 。

我可以依靠PHP的php.ini精确解决浮点问题

我发现PHP的浮点问题的一些解决方法: php.ini设置precision = 14 342349.23 – 341765.07 = 584.15999999992 // floating point problem php.ini设置,比方说precision = 8 342349.23 – 341765.07 = 584.16 // voila! 演示: http : //codepad.org/r7o086sS 那有多糟? 如果我只需要精确的2位数计算(金钱),我可以依靠这个解决scheme吗? 如果这个解决scheme失败了,你能不能给我一个明确的例子? 编辑:3.哪个php.ini.precision值适合最好的两位数字,金钱计算 请介意,我不能使用整数计算(浮点数* 100 =美分),这是为时已晚。 我不打算超过10 ^ 6的数字 我不需要比较数字 UPDATE @Baba答案很好,但是他在testing中使用了precision=20 , precision=6 …所以我还不确定它是否会工作。 请考虑以下事项: 假设precision = 8而我所做的只是加法+减法- A + B = C A – B […]

在Python中的round()似乎不是正确的四舍五入

round()函数的文档声明,您将它传递给一个数字,并且位置超过了小数点。 因此它应该这样做: n = 5.59 round(n, 1) # 5.6 但是,实际上,古老的浮点奇怪会蔓延,你会得到: 5.5999999999999996 为了UI的目的,我需要显示5.6 。 我在互联网上search,发现一些文档依赖于我的Python实现。 不幸的是,这发生在我的Windows开发机器和我试过的每个Linux服务器上。 也看到这里 。 没有创build我自己的圆形图书馆,有没有办法解决这个问题?

了解浮点问题

可能有人在这里请帮助我了解如何确定何时浮点限制会导致您的计算错误。 例如下面的代码。 CalculateTotalTax = function (TaxRate, TaxFreePrice) { return ((parseFloat(TaxFreePrice) / 100) * parseFloat(TaxRate)).toFixed(4); }; 我一直无法input任何两个值,导致这种方法的结果不正确。 如果我删除toFixed(4),我可以看到计算开始失去准确性的地方(小数点后6位)。 尽pipe如此,我对浮点数的理解是,即使是很小的数字有时候也不能被表示,或者我误解了,并且可以精确地表示4位小数(例如)。 MSDN解释浮动这样 … 这意味着它们不能持有任何不是二元分数的数量(forms为k /(2 ^ n),其中k和n是整数) 现在我假设这适用于所有的浮动(包括在JavaScript中使用的那些)。 从根本上讲,我的问题归结为这一点。 如何确定是否有任何特定的方法容易出现浮点操作中的错误,这些错误将以何种精度实现以及需要哪些input来产生这些错误? 希望我所问的是有道理的。