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