7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

小数点がドットじゃなくてカンマになってしまう場合の対応

Last updated at Posted at 2018-11-06

2018/11/09更新 : 実行環境、タグを追記しました。

実行環境

  • Mac OS X 10.13.6
  • Visual Studio for Mac 7.6.7
  • Xamarin.iOS 12.0.0.15
  • Xcode 10.1

きっかけ

普段Visual Studio for Mac(Xamarin.iOS)にてiOSアプリ開発を行なっているのですが、その時に発生した不具合についての備忘録です。
小数点の数値を文字列に変換する場合、小数点がドットではなく、カンマになってしまう場合がある。
URLのクエリに利用する文字列の場合、ドットにしないとエラーになって値を取得できないということがあったので調査。

原因

端末の言語設定が、ある地域の言語(ヨーロッパ圏言語等)の言語の場合、小数点をカンマで表現する様子

対応

小数点を含む数値を文字列に変換する時は、英語圏(en-US等)の書式を指定すると、小数点は常にドットで文字列化される。

実際の使用例は下記の通り


using System.Globalization;

/* 省略 */

// 文字列化したいdouble型
double val = 1.12345;
// 端末依存のCultureInfoで文字列出力した場合
// 文字列から数値に戻せるように書式指定子にR(ラウンドトリップ書式指定子)を指定
Debug.WriteLine ("Before: " + val.ToString("R"));

// CultureInfo.InvariantCultureでen-USの書式を取得
CultureInfo culture = CultureInfo.InvariantCulture;
// 数値文字列のフォーマットを取得
NumberFormatInfo format = culture.NumberFormat;

// CultureInfo.InvariantCultureのNumberFormatInfoを指定して出力
Debug.WriteLine ("After: " + val.ToString ("R", format));

このコードを、端末の言語設定がフランス語の場合で試した結果、コンソールでは下の画像のように出力されます。
(一部の出力は隠しています。)

qiita_image_20181107.png

参考

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?