プログラムが「C」ロケールの代わりにデフォルトで Windows OS ネイティブ ロケールを使用しているのを見たことがありますか (プログラムは C++ です)。
double を文字列に変換するときに、すべての小数点記号 (元はポイント) をコンマに置き換える C++ プログラムがあります。
以下のコードをプログラムに挿入した場合にのみ、この動作を再現できます
char* cpSettings = std::setlocale(LC_ALL, ""); // use native locale (Spanish), not C
ただし、ポイントをコンマ (小数点記号) に変更するこのプログラム/ソフトウェアのバージョンには、このコード行が含まれていないため、デフォルトで c ロケールを使用する必要があります。
このプログラムは、ある特定のコンピューターで double を string に変換する場合にのみ、ポイントをコンマ (小数点記号) に変換します。
これはロケールに関係していると思いましたが、めちゃくちゃになったマシンのロケールが英語に戻された場合でも (これは小数にポイントを使用します)、プログラムは double から string への変換でポイントをコンマに置き換えます。
質問: 以前にこの動作を見たことがある人はいますか? この動作の原因を知っている人はいますか?