Tag: 浮点

乘以0.99999999999是否可以舍入到1.0?

当将一个非常接近1的浮点数与int> 0相乘时,它是否可以解释为1。 也就是说,如果Math.random()返回可能的最高结果(即1.0以下的1步),将会 (int)(Math.random() * 8) 是8还是7? 举一个实际的例子,这个经常使用的结构可以给出一个索引越界的错误: someArray[(int)(Math.random() * someArray.length)]; 我特别感兴趣的Java和ActionScript 3的答案,但我想他们都使用相同的规则浮点运算,任何平台的答案将是有用的。 更新 :虽然我已经接受了一个答案,但是我还是希望证实这个在ActionScript 3中不会出错,因为一个同事报告他看到它出错一次是什么部分促使我问这个问题。

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

题 在Haskell中, base库和Hackage软件包提供了将二进制IEEE-754浮点数据转换为Float和Doubletypes浮点数据的多种方法。 但是,这些方法的准确性,性能和可移植性还不清楚。 对于旨在跨平台串行化二进制格式的GHC目标库,处理IEEE-754浮点数据的最佳方法是什么? 途径 这些是我在现有的库和在线资源中遇到的方法。 FFI封送 这是data-binary-ieee754软件包使用的方法。 由于Float , Double , Word32和Word64是Storable每个实例,因此可以将源types的值Word64外部缓冲区,然后peek目标types的值: toFloat :: (F.Storable word, F.Storable float) => word -> float toFloat word = F.unsafePerformIO $ F.alloca $ \buf -> do F.poke (F.castPtr buf) word F.peek buf 在我的机器上这工作,但我只看到分配执行,只是为了完成强制。 另外,虽然这个解决scheme并不是唯一的,但是这里有一个隐含的假设,即IEEE-754实际上是内存中的表示。 伴随包装的testing给了它“在我的机器上工作”认可的印章,但是这不是理想的。 unsafeCoerce 与内存中的IEEE-754表示相同的隐含假设,下面的代码也得到了“在我的机器上工作”的封印: toFloat :: Word32 -> Float toFloat = unsafeCoerce 这样做的好处是不像上面的方法那样进行明确的分配,但是文件中说“确保新旧types具有相同的内部表示是你的责任”。 这种隐含的假设仍然在做所有的工作,而且在处理被取消的types时更加费力。 […]

将负浮点值转换为unsigned int的行为是什么?

如果将负浮点值转换为无符号整型的值,会发生什么情况? 标准报价将不胜感激。 我面临的问题是从变体类转换为无符号整型types的值,其中包含浮点types的对象。 例: unsigned i = -.1;

我如何testing负零?

最初,我认为Math.Sign将是正确的路线,但在运行testing后,似乎将-0.0和+0.0视为相同。

什么是浮点数的“偏差值”?

在学习如何在计算机中表示浮点数的过程中,我遇到了“偏差值”这个我不太明白的术语。 浮点数中的偏差值与浮点数的指数部分的负值和正值有关。 浮点数的偏移值是127,这意味着总是将127添加到浮点数的指数部分。 这样做如何帮助确定指数是否为负值或正值?

哈斯克尔范围和浮游物

为什么Haskell范围符号的行为与浮点数不同,而不是整数和字符? Prelude> [1, 3 .. 10] :: [Int] [1,3,5,7,9] Prelude> [1, 3 .. 10] :: [Float] [1.0,3.0,5.0,7.0,9.0,11.0] Prelude> ['a', 'c' .. 'f'] "ace" 如果最后一个元素接近上限,我会理解,但这显然不是一个四舍五入的问题。

将浮点数转换为具有设置精度和小数位数的string?

如何在C ++中将float转换为string,同时指定精度和小数位数? 例如: 3.14159265359 -> "3.14"

浮点精度是可变的还是不变的?

我不断得到浮点数( float , double float或long double float )是否只有一个精度值,或精度值是否可变的混合答案。 浮点与双精度的一个主题似乎意味着浮点精度是绝对的。 然而,另一个名为float和double的区别说, 一般来说,double有15到16个十进制数字的精度 另有消息称, floattypes的variables通常具有约 7位有效数字的精度 doubletypes的variables通常具有大约 16位有效数字的精度 如果我正在处理敏感的代码,那么当我的值不准确时,我不喜欢引用上述近似值。 所以让我们直接logging下来。 浮点精度是可变的还是不变的,为什么?

Objective-C浮点四舍五入

我怎样才能将一个浮点数四舍五入到Objective-C中最接近的整数: 例: float f = 45.698f; int rounded = _______; NSLog(@"the rounded float is %i",rounded); 应该打印“圆形的浮标是46”

比较浮点数到零

C ++ FAQ lite “[29.17]为什么我的浮点比较不起作用? build议这个平等testing: #include <cmath> /* for std::abs(double) */ inline bool isEqual(double x, double y) { const double epsilon = /* some small number such as 1e-5 */; return std::abs(x – y) <= epsilon * std::abs(x); // see Knuth section 4.2.2 pages 217-218 } 这是否正确,这意味着等于零的唯一数字是+0和-0 ? 是否应该在testing零时使用这个函数,或者像是|x| < epsilon这样的testing |x| < epsilon […]