我怎么知道小数是否终止?

Dar*_*Zon 3 c# algorithm class

我正在创建一个程序,孩子们必须将小数值(IE 0.xxxx - precision 4)转换为分数.

我需要知道一个分数是否终止,我的意思是:

1/9 ~ 0.111111/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指出的那样.

  • 这似乎不完整...... 14/7没有重复的小数.你错过了一个等于0的分子模型分母的检查 (3认同)