java - Java 浮点危险可以通过舍入来避免吗?

标签 java floating-point bigdecimal arbitrary-precision

众所周知,当需要任意精度时,不应使用 java 浮点原始值。 Goetz 在他的 excellent article 中解释了这个问题。 。

想象一下,我们需要在某个项目中实现任意精度,并且我们没有 BigDecimal 类(因为它在 API 中不可用,例如:JavaME),也没有时间开发一个 BigDecimal 类。自定义实现。假设我们事先知道只需要相对较小的精度(2 到 4 位小数),是否有可能使用 float 和 double 类型以及舍入函数来实现 100% 可靠的紧急解决方法?如果可以,可以使用 API 中的哪个函数? 如果这个功能不可用,但您仍然认为它可以解决问题,那么实现它有多复杂?

最佳答案

不,这是不可能的,因为某些值无法使用浮点算术表示。 0.1 是最简单的示例。

关于java - Java 浮点危险可以通过舍入来避免吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8506654/

相关文章:

java - 运行简单的 Swing 程序时出错

java - Play Framework 2.0.4,Java : compound primary key declaration and assignment

java - 我的服务器应用程序无法在 Eclipse 上运行

Python float 到字符串 : how to get '0.03' but '-.03'

java - 即使精度超过可用数字,格式也不打印所有两位数

java - BigDecimal 的奇怪舍入问题

java - 为什么 BigDecimal 的值与构造函数中提供给它的值不匹配?

java - 跳过发送 Junit 中的方法参数之一

c++ - double 在什么时候开始失去精度?

c# - 从 NSDictionary 中获取浮点值