【问题标题】:DecimalFormat not working for 8233.4892578125 Double value?DecimalFormat 不适用于 8233.4892578125 Double 值?
【发布时间】:2014-04-24 11:04:19
【问题描述】:

我的变量的 Double 值是 8233.4892578125,现在当我传递它以使用以下代码将其转换为 8233.5 时,它没有按预期工作。

DecimalFormat df = new DecimalFormat("#.#");
    private String convertToFormat(double value){

        return df.format(value);
    }

现在当我通过 convertToFormat(8233.4892578125) 它给我下面的输出:

8233,5

那么为什么会发生这种情况,它应该给我 8233.5 而不是 8233,5 谁能给我这个问题的正确答案。

注意:当我将我的 android 模拟器语言从设置更改为意大利语时会发生此问题。

【问题讨论】:

  • . 不是 .。表示小数点分隔符。

标签: android number-formatting decimalformat


【解决方案1】:

这是一个Locale 问题。您应该提供一个使用点进行十进制表示的本地。使用欧洲语言环境,您应该明白这一点(Locale.ITALIAN 例如)。

编辑:

DecimalFormat decimalFormat = (DecimalFormat)
        NumberFormat.getNumberInstance(Locale.ITALIAN);
decimalFormat.applyPattern("#.#");

【讨论】:

  • 我已经通过这个 String.format(current, getString(R.string.distance_calculation),4578.678);在方法中将当前作为意大利语 it_IT 传递,但它现在仍在工作
  • 我相当肯定意大利语使用, 作为小数分隔符。见en.wikipedia.org/wiki/File:DecimalSeparator.svg
  • @blackbelt 谢谢我刚刚通过 Applying String.format(Locale.US, getString(R.string.distance_calculation),4578.678);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多