【C#】実数から小数部の取得
関連記事
- 【#CSHARP】ソリューション内でサービス,Winformアプリを混在で作成させ,バイナリ出力先を同じにするとサービスが起動しない 【2024年02月08日(木)】
- 【#PHP】謎な #Laravel 案件 引き渡したじ 【2024年01月11日(木)】
- 【C#】謎な改造アプリ,SIMD命令を導入して高速化しようか,思案中 【2023年11月14日(火)】
- Javaの”やらかし”でC#と人気逆転か 激変プログラミング言語人気ランキング 【2023年10月18日(水)】
- 【#CSHARP】次の案件のスケルトン書いてgitサーバに登録するなどと 【2023年05月16日(火)】
123.456
って,数字があったとき
123
を取り出すのは
float a = Math.Truncate(123.456);
でOK!
んじゃぁ~
0.456
を取り出すときは??
Mathライブラリにメソッドでも準備されてるかと思ったら,無い
はりゃ?ってなって調べてみたら
剰余演算子”%”を使えばいいらしい
float b = 123.456f % 1.0f;
1.0で割った余りで求められるそうな
剰余演算子”%”って整数だけがちゃんと動くのかと,思ってた(爆
小数にも使えるんですなぁ...
少数を取り出すのは
float a = 123.456 – Math.Truncate(123.456);
でもよいですね
余談ですが英語対応のデータロガーソフトを以前作ったとき
英語環境ではなくドイツ語環境(Wondowsドイツ語版)で使われて誤動作しまくりでした
よくよく調べると欧州や南米では小数点はピリオド[.]ではなくカンマ[,]が使われており、
測定器から送られたピリオドのASCII文字をfloat実数に変換する際、エラーになるというものでした
文字列や数字のフォーマットの不統一ってプログラマーにとってはうっとおしいことこの上ないです
だれか強力な政治力を発揮して統一して欲しいもんです
>>メロン さま
>>float a = 123.456 – Math.Truncate(123.456);
あ,ですね.この手も使えますなぁ~
>>文字列や数字のフォーマットの不統一ってプログラマーにとってはうっとおしいことこの上ないです
>>だれか強力な政治力を発揮して統一して欲しいもんです
あ,そうですねぇ~
ヨーロッパとか,小数のピリオド,カンマですなぁ...
欧州向けのシステムはまだ,作ったこと無いんで
不具合に遭遇したことないですけど,気をつけないといかんですね 😉
剰余が実数にも使えるってちょっと許せない気分です。(^^;
ワシはC言語ばっかだったんでついついキャストでやっちゃいますね。
float a = 123.456 – (int)(123.456);
>>匿名 さま
キャストもいいですねぇ
こうしてみると,いろいろ手がありますなぁ
キャストとMath.Truncateってどっちが速いのかな?
剰余算より整数部を引くほうが速そうな気はするけど。
>>康ちゃん@まったり~ さま
う~む,コンパイラの挙動で変わりそうじゃが
なんとなく,キャストのほうが速そう.インラインコードレベルで片付ける気がする
Math.Truncateだと,関数が呼ばれそうじゃし