Dar*_*Zon 3 c# algorithm class
我正在创建一个程序,孩子们必须将小数值(IE 0.xxxx - precision 4)转换为分数.
我需要知道一个分数是否终止,我的意思是:
1/9 ~ 0.111 但 111/1000 = 0.111
我正在创建一个Fraction类,但我不知道如何区分这两个案例.
public class Fraction
{
#region Fields
private int _numerator;
private int _denominator;
#endregion
#region Properties
public int Numerator
{
get { return _numerator;}
set { _numerator = value;}
}
public int Denominator
{
get { return _denominator;}
set { _denominator = value;}
}
public decimal DecimalValue
{
get { return (decimal)_numerator / _denominator; }
}
#endregion
#region Constructors
public Fraction() { }
public Fraction(int numerator, int denominator)
{
this.Numerator = numerator;
this.Denominator = denominator;
}
#endregion
}
Run Code Online (Sandbox Code Playgroud)
你能帮助我吗?提前致谢.
Sea*_*n U 11
找到分母的主要因子分解.
如果所有素数因子都是2或5,则它将具有有限的十进制表示.
如果它的素数因子不是2或5,那么它将是一个重复的小数.
(它有效,因为10的素因子是2和5.)
编辑 - 并检查numerator % denominator不是0,正如Stefan H指出的那样.