1

トークバックに問題があります。私の文字列には、次の番号があります。

1,827

これはオランダの数字で、 1 ユーロ 82.7 セントを意味します。

しかし、トークバックは言っています: 1827 ユーロ.

したがって、この問題は、小数点以下が 2 桁を超える数値がある場合にのみ発生します。この問題を解決するにはどうすればよいですか?

- -編集 - -

このページを読んでいるとき: https://english.stackexchange.com/questions/62397/reading-out-decimal-numbers-in-english

1,827という数字を次のように発音する必要があるようです。

1.8 2 7代わりに、それが数字の場合に行動します。これを行う方法?

- -編集 - -

私は以下を含めました:

 StringTokenizer stringTokenizer = new StringTokenizer(value, ".");
    String currencyBeforeComma = null;
    String currencyAfterComma = null;

    while (stringTokenizer.hasMoreTokens()) {
        currencyBeforeComma = stringTokenizer.nextToken();
        currencyAfterComma = stringTokenizer.nextToken();
    }

    result = currencyBeforeComma + " point " + currencyAfterComma;

だから今、その発音: 1 ポイント 8 アンダー 27 . だから、これは今でも私が欲しいものです。

- -編集 - -

String value = 1,827;        
String result = "";
        for (Character chars : value.toCharArray()) {
            result = result + chars + " ";
        }
        String replace = result.replace(getResources().getString(R.string.accessibility_decimal_separator), getResources().getString(R.string.accessibility_decimal_separator_text));
        return replace;

これが私がしたことです。値文字列のすべての char と , または . コンマまたはポイントテキストに置き換えました。

これは今のところ機能しますが、クリーンなソリューションではありません。他の誰かがより良い解決策を持っている場合は、共有してください

4

1 に答える 1

0

これを試して、要件に合わせて変更してください

TextView currencylbl = (TextView) findViewById(R.id.currencylbl);
        boolean countryCurrency = true;
        String currency = "1,827";
    if(countryCurrency==true && currency.contains(",")){

            StringTokenizer stringTokenizer = new StringTokenizer(currency, ",");
            String currencyBeforeComma = null;
            String currencyAfterComma = null;

            while (stringTokenizer.hasMoreTokens()) {
                currencyBeforeComma = stringTokenizer.nextToken();
                currencyAfterComma = stringTokenizer.nextToken();
                currencylbl.setText(currency);
            } 

            Double double1 = Double.parseDouble(currencyAfterComma);
            double1 = Double.parseDouble(currencyBeforeComma)+double1/1000;
            currencylbl.setContentDescription(double1+"");
        }

countryCurrency は、特定の国の通貨ブール値を参照します。また、必要に応じて変更します。

            Double double1 = Double.parseDouble(currencyAfterComma);
            double1 = Double.parseDouble(currencyBeforeComma)+double1/1000;
            currencylbl.setContentDescription(double1+"");

xmlは

<TextView 
    android:id="@+id/currencylbl"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="24sp"
    />
于 2015-09-01T07:53:12.647 に答える