代码之家  ›  专栏  ›  技术社区  ›  iknow BIkash Subedi

DecimalFormatSymbols返回了错误的十进制分隔符。getInstance()。小数分隔符

  •  0
  • iknow BIkash Subedi  · 技术社区  · 4 年前

    基于这个问题: Decimal point or decimal comma in Android 我试图在设备中使用十进制分隔符。我正在使用Kotlin,因此我的代码如下所示:

    import android.icu.text.DecimalFormatSymbols
    
    DecimalFormatSymbols.getInstance().decimalSeparator  // function used in onCreate()
    

    此代码返回 , 但在设备上,例如EditText中使用的分隔符是 . .为什么会这样?


    例如,我认为它返回了错误的结果:

    import android.icu.text.DecimalFormatSymbols
    
    class MainActivity : AppCompatActivity() {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            txtSeparator.text = DecimalFormatSymbols.getInstance().decimalSeparator.toString()
            txtTest.text = (1234.5678).toString()
        }
    }
    

    enter image description here

    为什么第一个文本视图中的分隔符与第二个文本视图或EditText中的分隔符不同?它发生在一些语言中。在英语中可以,但在波兰语中不行。

    0 回复  |  直到 4 年前
        1
  •  1
  •   Luiz Rodrigo    4 年前

    排队 txtTest.text = (1234.5678).toString() 只是告诉虚拟机,它应该使用标准的数字到字符串转换过程,所以它会把一个点作为小数点分隔符,如果你使用小数点较多的double,它甚至会使用科学记数法。相反,你应该看看Android开发者的这个页面,这里有一些具体的数字格式设置方法: https://developer.android.com/reference/java/text/DecimalFormat

    推荐文章