x.com/ufcpp/status/18566412300
これ、正しくはどうあるべきなのか分かってなかったり…
float→intでオーバーフローしてるだけではないの?

using System;
float a = 1E10f;
int b = (int)a;
Console.WriteLine(b);

とかでもbの値はint.MinValueになるが…

あ、理解した。
元がプラスの値なのに、変換してマイナス(int.MinValue)になるのは直感的じゃないって話か。

それで元がプラスならプラス(つまり、int.MaxValue)になるように.NET9で仕様変更が入ったのね。
learn.microsoft.com/ja-jp/dotn

フォロー

個人的には、(uncheckedなコンテキストで)int範囲外の浮動小数点数をintに変換したとき、想定外の値に変換されてたとしても、あんまり文句は言えないかなあ、と思った。まあプラスの数がMinValueになるのは直感的には、変ではある。

ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。