Closed4

INumber型を継承した分数型に関する考察

にー兄さんにー兄さん

昔、分数型というものを考えたことがあった(その時は連分数を表現したかったとかなんとか)
整数(もしくは小数)の割り算って、コンピュータで行うと誤差が蓄積してしまう
なので、割り算の演算を分数として記録しておいて記録しておき、
分数での演算を行ったうえで最後にfloatにする

にー兄さんにー兄さん

分数は英語でFractionなのでFraction型としよう

割り算だけではなく、四則演算を通分などして分数として記録する

ちなみに下のコードのようなことをしても、ちゃんと-2と表示される

using System;
					
public class Program
{
	public static void Main()
	{
		var a = 1.0f /3.0f - 1f/1f;
		
		a-=1f+1f/3f;
		
		Console.WriteLine(a*1);
	}
}

だからまぁ......既存のシステムで誤差が蓄積しそうな実装をしてもそんなに問題ではないんだよな

このスクラップは2023/03/30にクローズされました