android十进制格式为阿拉伯语,符号在数字的右侧

jos*_*ick 5 android decimalformat right-to-left

我正在尝试支持左语言的RTL,并且正在测试阿拉伯语(我对此一无所知)。

负号/正号应该位于数字的右侧还是左侧?我认为应该在左侧,但是当我使用Android的DecimalFormat将数字放入设备设置的语言环境中时,该符号会显示在右侧。

有没有人遇到过这种情况,知道如何解决?我能想到的最好是,如果它是负数,则用括号将其打印出来,这应该可以解决但不是理想的情况。

编辑

抱歉,代码总是有帮助的。如果我打印以下内容(经度为负):

DecimalFormat coord_df = new DecimalFormat("#.000000");
coord_df.format(loc.getLongitude())
Run Code Online (Sandbox Code Playgroud)

像这样印

##,######-
Run Code Online (Sandbox Code Playgroud)

#号是阿拉伯数字(如此处显示在东部阿拉伯行上的数字:http : //en.wikipedia.org/wiki/Eastern_Arabic_numerals

我需要在数字的正确边上得到负数(我相信这是左边)

我最终只是在需要弄乱显示数字(如此处的答案)时检查设备是否为RTL:android确定设备是否为从右到左的语言/布局

如果设备是RTL,则我使用带有负号的负子模式作为后缀,如下所示:

"#.000000,#.000000-"
Run Code Online (Sandbox Code Playgroud)

Min*_*amy 5

只是分享另一种方法,在文本视图中,您可以将文本方向设置为从左到右,它将正确显示负号。

textView.setTextDirection(TextView.TEXT_DIRECTION_LTR);
Run Code Online (Sandbox Code Playgroud)


Sim*_*imo 0

我不知道你的代码是什么,但我用代码-1,111,11得到了这个:

        DecimalFormat df2 = new DecimalFormat( "#,###,###.###" );
        Double dd=-1111.11;
        String res=df2.format(dd);
        ((EditText)findViewById(R.id.editText1)).setText(res);
Run Code Online (Sandbox Code Playgroud)