https://x.com/ufcpp/status/1856641230056415402これ、正しくはどうあるべきなのか分かってなかったり…float→intでオーバーフローしてるだけではないの?
using System;float a = 1E10f;int b = (int)a;Console.WriteLine(b);
とかでもbの値はint.MinValueになるが…
あ、理解した。元がプラスの値なのに、変換してマイナス(int.MinValue)になるのは直感的じゃないって話か。
それで元がプラスならプラス(つまり、int.MaxValue)になるように.NET9で仕様変更が入ったのね。https://learn.microsoft.com/ja-jp/dotnet/core/compatibility/jit/9.0/fp-to-integer
個人的には、(uncheckedなコンテキストで)int範囲外の浮動小数点数をintに変換したとき、想定外の値に変換されてたとしても、あんまり文句は言えないかなあ、と思った。まあプラスの数がMinValueになるのは直感的には、変ではある。
様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。
あ、理解した。
元がプラスの値なのに、変換してマイナス(int.MinValue)になるのは直感的じゃないって話か。
それで元がプラスならプラス(つまり、int.MaxValue)になるように.NET9で仕様変更が入ったのね。
https://learn.microsoft.com/ja-jp/dotnet/core/compatibility/jit/9.0/fp-to-integer