0

私が知りたいWindowsでは、C ++を使用して小数点以下が何桁になるかを知りたいです。Windows で locale.h ヘッダーを使用しました。 struct lconv があり、ロケール設定に関する多くの情報が得られますが、小数点以下の桁数は通貨 (お金) の数量についてのみ示されますが、ロケール設定を取得する必要があります。通常の値です。私を助けてください、小数点以下の桁数を取得するにはどうすればよいですか?

4

2 に答える 2

1

数値の小数点以下の文字数は、ロケールに依存しません。で表示される小数点以下の桁数は、std::ostreamを使用して調整できstd::setprecisionます。そこの例を参照してください。

于 2012-12-31T11:35:25.823 に答える
1

初めて質問を読み違えました。私の悪い。これが修正された答えです。

これは「C++」の答えではありませんが、「Windows で」と言ったので、Win32 でどのようにできるかを引用できます。

小数点以下の桁数については、 GetLocalInfoEx (lcid、LOCALE_IDIGITS 、...)。

#include <Windows.h>
#include <Winnls.h>
#include <stdio.h>

int GetNumberOfDigitsForDecimal()
{
    const int stringsize = 2; // docs for LOCALE_IDIGITS says this won't be more than 2 including the null char

    wchar_t value[stringsize] = {};
    GetLocaleInfoEx(LOCALE_NAME_USER_DEFAULT, LOCALE_NOUSEROVERRIDE|LOCALE_IDIGITS, value, stringsize);
    return _wtoi(value);
}

ロケール (lcid) 値を取得する方法を提案しなかったため、現在ログインしているユーザーを想定しています。Windows では、ユーザーはコントロール パネルに移動して、時刻、数値、および日付の書式指定子を変更できることに注意してください。(コントロール パネル -> 地域 -> 追加設定)。その言語のデフォルトの設定ではなく、彼の設定を尊重したい場合は、上記の LOCALE_NOUSEROVERRIDE フラグを削除できます。

Windows XP をサポートする必要がある場合は、GetLocaleInfoEx の代わりに GetLocaleInfo を使用てください。

于 2012-12-31T12:29:08.660 に答える