繁体   English   中英

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

[英]How can I know if a decimal terminates?

我正在创建一个程序,孩子们必须将小数值(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
}

你能帮助我吗? 提前致谢。

找出分母的主要因子分解。

如果所有素数因子都是2或5,则它将具有有限的十进制表示。

如果它的素数因子不是2或5,那么它将是一个重复的小数。

(它有效,因为10的素因子是2和5。)

编辑 - 并检查numerator % denominator不是0,正如Stefan H指出的那样。

我没有对此进行详尽的分析来证明或反驳以下内容,但是从我的头脑中看,以下似乎适用于整数......

如果没有剩余部分,那么您就没有问题需要担心。 如果有一个余数且分母具有2和5之外的因子,那么你将有一个重复分数。

如果分母是小数,则可能需要稍微调整这些规则。

希望这可以帮助。

如果我正确解释,您希望将分数转换为重复小数,并且您在计算重复部分时遇到问题。

以下是如何做到这一点的一个很好的解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM