gpt4 book ai didi

floating-point - 浮点舍入检测

转载 作者:行者123 更新时间:2023-12-04 06:49:24 28 4
gpt4 key购买 nike

我正在使用 java 并引用“double”数据类型。简而言之,我正在从标准输入中读取一些值,这些值是我在代码中读取的 double 值(我更愿意使用 BigInteger 之类的东西,但现在这是不可能的)。

我希望从用户那里得到双重值(value),但有时他们可能会输入如下内容:999999999999999999999999999.9999999999我认为这超出了 double 和 get 的准确表示形式(可能)四舍五入到 1.0E27。

我想获得一些关于如何检测特定值是否无法在 double 中准确表示并且需要四舍五入(以便我可以拒绝该值或其他此类操作)的指示。

非常感谢

最佳答案

人类输入的大多数值不能用 double 值准确表示。

例如,是否要阻止用户输入 0.1?这不能完全表示为 double。

要找到错误的规模,您可以这样做:

BigDecimal userAsDecimal = new BigDecimal(userInput);
double userAsDouble = double.parseDouble(userInput);
BigDecimal doubleToDecimal = new BigDecimal(userAsDouble);
BigDecimal error = userAsDecimal.subtract(userAsDouble).abs();

然后检查“错误”是否小到可以容忍的程度。

关于floating-point - 浮点舍入检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/268652/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com