【问题标题】:Converting from a text field to an numeric in Android在Android中从文本字段转换为数字
【发布时间】:2009-10-01 14:00:20
【问题描述】:

如果我的屏幕上有一个 EditText 组件,我已为其指定了 inputType="decimal"(即数字/十进制字段),那么在应用程序代码中将其转换为十进制值的最佳方法是什么?

Google recommends 避免floats,并避免不必要地创建对象(我认为任何自动拆箱代码也很糟糕),所以我将这些作为我的约束。我意识到一个小型应用程序可能不需要太担心,但我一直无法找到解决此问题的“最佳实践”解决方案。

最常见的解决方案似乎是这样的:

double value = Double.parseDouble(txtInput);

【问题讨论】:

    标签: java android mobile floating-point


    【解决方案1】:

    这是最好的解决方案,您还应该检查“NumberFormatException”异常,以防出现无效字符。如果有错误,则将反馈反馈给用户。

    如果您不想要浮点数,则必须查看定点算法。他们希望您避免使用 float 的原因是因为它很少在手机 cpu(可能是 arm)上实现,并且必须在速度较慢的软件中实现。硬件通常支持定点。

    【讨论】:

    • 酷,谷歌确实指出浮动操作可能是软件而不是硬件,因为移动 CPU,因此速度较慢。
    【解决方案2】:

    使用Double.parseDouble是最佳解决方案的原因:

    • 在普通 CPU 上,float 操作由硬件操作实现。这很可能没有内置到移动 CPU 中,而是会被软件操作(速度明显较慢)所取代。

    • 使用 Double 的静态方法,而不是通过 new Double(txtInput) 创建实例更利于内存使用,因为这意味着只有类定义加载到 JVM 中,并且我们永远不会从状态信息中获得额外的开销由Double 的实例创建。

    • Double.parseDouble 的替代品是Double.valueOf,但这会返回Double 的实例,然后我们创建了一个不必要的对象,因为我们只是将其拆箱为double 原语。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 2019-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多