.NET FrameworkのSystem.Drawing.SizeFからSizeに変換するメソッドの違いを確認してみました。
コード
using System; using System.Drawing; namespace ConsoleApp1 { class Program { static void Main(string[] args) { var sizes = new SizeF[] { new SizeF(3.4f, 3.5f), new SizeF(-3.4f, -3.5f), }; foreach (var size in sizes) { Console.WriteLine("Round: " + Size.Round(size)); Console.WriteLine("Ceiling: " + Size.Ceiling(size)); Console.WriteLine("Truncate: " + Size.Truncate(size)); Console.WriteLine("ToSize: " + size.ToSize()); Console.WriteLine(); } } } }
実行結果
Round: {Width=3, Height=4} Ceiling: {Width=4, Height=4} Truncate: {Width=3, Height=3} ToSize: {Width=3, Height=3} Round: {Width=-3, Height=-4} Ceiling: {Width=-3, Height=-3} Truncate: {Width=-3, Height=-3} ToSize: {Width=-3, Height=-3}
- Size.Round
- 四捨五入
- Size.Ceiling
- 上に向かって丸める
- Size.Truncate
- 小数点以下切り捨て
- SizeF.ToSize
- 小数点以下切り捨て
分かりにくいのはCeilingですね。
天井という意味で、上に向かって丸めるので、
-3.4、-3.5は-4ではなく、-3になります。
Size構造体のメソッドにはありませんが、下に向かって丸めるのがMath.Floorで
-3.4、-3.5を-4に丸めます。
Floorは床って意味です。