新しいものを表示
orange さんがブースト

漢数字が数字扱いなせいでFacebookから複垢判定食らってBANされる人名の話

orange さんがブースト

←寝てから翌日投稿するまで状態が確定しない量子もつれに移行したアカウント
>クマムシを極低温の量子ビット回路に組み込んだところ、クマムシにも量子世界に特有の、観察するまでは状態が確定しない「量子もつれ」に移行した
クマムシを「量子もつれ」状態にすることに成功! - ナゾロジー
nazology.net/archives/101934

ちなみに、おもしろいことに数値表示に関するISO規格の規格書本文では、小数点は『 , 』になってる><;
(規格上はどちらでもおkらしい><(ていうか言及してないっぽさ))

ていうか、C# の実用的なコードを一度でも書いたことがある日本人プログラマで、数値の文字列への変換時には小数点を壊されないように必ずCultureInfo.InvariantCultureを明示的に指定しなければならないって知ってた人どのくらいいる?><;

orange さんがブースト

だいたい日本のロケールは相対的には綺麗な方だからなぁ。気付かんのも無理はないといえばそうかもしれないが、まあどこまで常識と教養ということにするかの線引きの問題と言われると否定はできない

日時とかはロケールの考慮が必要なのはそりゃわりと多くのプログラマが気づいてるかも><
オレンジも大昔からそこはちゃんとしたコード書いてる><
でも小数点がロケール依存で変わっちゃうとかよほど注意されなきゃ気づかないんでは?><;
「そういう文化圏の人でも計算機上での小数点は『 . 』にしてるだろう><」と少なくともオレンジは昨日まで思い込んでたもの><;

orange さんがブースト

.NETに関してはデフォルトをCultureInfo.InvariantCultureにしなかったのが不味すぎると思う><;

orange さんがブースト

MSいわく、fa-IRロケールは小数点がスラッシュだそうです。壊していけ。

orange さんがブースト

その1:データと表示形式を混同するからこうなる
その2:そもそもシリアライズを素人が書くな
その3:それはそれとして勝手にカルチャ依存の処理をやらかす言語や処理系の罠はある

みたいなモヤモヤ

C# のToString()とかString.Format()とか数値を文字列に変えるやつは基本的に明示的にCultureInfo.InvariantCultureを指定しないと、動作環境にあわせて小数点を『 , 』にしちゃうので、『 . 』文化圏の人はそんな事知らずに"000.00"みたいな書式指定だけしてると思う(オレンジもそうだった><;)ので、この問題を起こすけどフランス文化圏で実行されたことがなく発覚してないコード結構ありそう><

orange さんがブースト

本題のベトナムロケールでも試した><;
vi-VN
0123,456
ちゃんと , になっちゃった!!!><;
C# で数値を文字列にしたいときは必ず明示的にCultureInfo.InvariantCultureをつけないと危険!!!><;
(当たり前だけど、つければちゃんとベトナムロケールでも0123.456になった><)

スレッドを表示
orange さんがブースト

CultureInfo culture = CultureInfo.GetCultureInfo("da-DK");
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;
ってして、
double d = 123.456;
Console.WriteLine(Thread.CurrentThread.CurrentUICulture);
Console.WriteLine(d.ToString("0000.000"));
ってしたら
da-DK
0123,456
って出た!><;

orange さんがブースト

つまり、csvで数値を保存する時にも " " で囲うの必須で(数値なら要らないと今まで思ってた><;)、
csvから数値を読む場合は、SIに従うならば(?)、『 . 』も『 , 』もどちらも小数点であるとみなさなければならないっぽい><

orange さんがブースト

ていうかベトナムがというかフランスの影響が強いエリアがだいたいフランス式つまり『 , 』方式で結構広いエリアで、つまりダメじゃん><

orange さんがブースト
orange さんがブースト

小数点 - Wikipedia ja.wikipedia.org/wiki/%E5%B0%8
"国際単位系(SI)では小数点について、イギリス式でもフランス式でも、どちらでもよいと規定している。"

フランス式がそうなので、基本的にはフランスの影響が強いエリア全部そう><

orange さんがブースト

ロケールなんてある種の定式化されたフォーマットの問題なので、開発者の意識が低すぎるとしか

古いものを表示
:realtek:

思考の /dev/null