当前位置: 首页 > 知识库问答 >
问题:

在Android字符串资源中更改十进制分隔器区域设置

周玺
2023-03-14

我想在我的Android应用程序中显示一些坐标。我从后端收到两个双精度值(latlong,以十进制度数表示)。

示例数据:

var lat : Double = 52.5027
var long : Double = 5.41982

现在我在我的类文件中填充我的文本视图:

tvLat.text = getString(R.string.gps_format, lat)
tvLong.text = getString(R.string.gps_format, lat)

我的xml资源文件包含以下内容:

<string name="gps_format">%,.5f&#176;</string>

它显示:

52,50270°
5,41982°

因为我住在荷兰,所以它的格式是相应的。

看见https://developer.android.com/reference/java/util/Formatter

数字定位算法

  1. 如果存在十进制分隔符,则替换特定于语言环境的十进制分隔符

我们通常使用作为十进制分隔符 作为荷兰的组分隔符

问题:

  • 是否有国际标准要求小数分隔符为

期望输出:

52.50270°
5.41982°

我还没有找到一种XML的方法,所以我猜它必须通过代码来完成。我已经研究了setDecimalSeparator方法,但找不到任何有效的解决方案。


共有1个答案

翁钧
2023-03-14

我发现了一些可以被称为肮脏解决方案的东西。

tvLat.text =
    getString(R.string.gps_format,
        DecimalFormat(
            "##0.00000",
            DecimalFormatSymbols(Locale.getDefault())
                .apply { decimalSeparator = '.' }
        ).format(lat).toString()
    )

还有我资源文件的改动

<string name="gps_format">%s&#176;</string>

新产出:

52.50270°
5.41982°

不过,我想在我的字符串资源中有格式。有人有建议吗?

 类似资料:
  • 问题内容: 我需要用点替换逗号,然后我需要将值设为数字。所以我这样写: 但是然后我想转换该值,然后出现错误: 问题答案: 该函数使用会话的NLS_NUMERIC_CHARACTERS设置来决定如何解释逗号和句点。如果您知道字符串始终以逗号作为小数点分隔符,则可以使用可选的第三个参数将其覆盖为调用的一部分;尽管这确实意味着您必须指定格式模型: 您不需要单独的步骤。 您也可以使用更改会话的设置,但可能

  • 我试图组成一个格式化的字符串,应该看起来像这样: 一瓶伏特加要x.yz卢布。 其中x.yz是四舍五入为2个小数点的任意双精度值。 为了实现这一点,我使用字符串插值和printf语法: 不幸的是,在一台使用俄语语言环境的机器上,上面的代码片段产生的结果与我想要实现的结果略有不同: str:String=一瓶伏特加要2.56卢布。 这是可以理解的(f interpolator使用的Java格式化程序应

  • 我正在做一个项目,它需要在飞行中改变语言。我正在尝试设置所需的区域设置,但我一设置,应用程序就崩溃了,抱怨它找不到资源(比如r.layout.*r.drawable.*) 这是我用来设置新区域设置的代码: 编辑:已添加日志 E/AndroidRuntime:致命异常:main java.lang.RuntimeException:无法启动activity组件Info{com.flavorburst

  • 问题内容: 我对使用MONEY数据类型的JDBC应用程序有疑问。当我插入MONEY栏时: 我有例外: 在使用ODBC驱动程序的本机Windows应用程序中,也可以使用相同的SQL。我住在波兰,居住在波兰,在我的国家/地区用逗号分隔数字的小数部分,因此我尝试: 而且有效。我检查了在PreparedStatement中必须使用点分隔符:。当然,我可以使用: 但是有些代码是“通用”代码,它从csv文件导

  • 我正在处理插座连接。我在客户端工作。我已经讨论了Socket作为十六进制传递值。我需要在服务器上发送字符串,例如(0x01是一个十六进制值和一个字符串“ravi”),他们需要像1 72 61 76 69这样的六进制值。我尝试将字符串Ravi转换为hexa值作为字符串并附加“1”,并尝试转换为字节数组。我得到一个异常,StringIndexOutOfBound异常。 更新: `public stat

  • 我有一个像“示例”这样的字符串。我想得到十六进制格式的字符串;像这样: 请给出C#语法。