Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我怎么知道小数是否终止?_C#_Algorithm_Class - Fatal编程技术网

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

C# 我怎么知道小数是否终止?,c#,algorithm,class,C#,Algorithm,Class,我正在创建一个程序,孩子们必须将十进制值(即0.xxxx-精度4)转换成分数 我需要知道分数是否终止,我的意思是: 1/9~0.111但111/1000=0.111 我正在创建一个分数类,但我不知道如何区分这两种情况 public class Fraction { #region Fields private int _numerator; private int _denominator; #endregion #region Properties

我正在创建一个程序,孩子们必须将十进制值(即0.xxxx-精度4)转换成分数

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

1/9~0.111
111/1000=0.111

我正在创建一个
分数
类,但我不知道如何区分这两种情况

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,它将有一个有限的十进制表示

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

(这是因为10的主要因子是2和5。)


编辑-并检查
分子%分母
是否如Stefan H所指出的那样不是0

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


如果它是无限的,则分母为0或非常接近0,具体取决于精度。检查0?很抱歉,您是否正在尝试确定分数是否为0.1?比如0.111111?或者你是在试图弄清楚结果分数是否应该是无穷大的表示?我现在有点困惑。“素数分母不是2或5(即互质到10)的最低分数总是产生一个重复的小数。”他的代码显示分子和分母是没有小数部分的整数。只是记着而已。这似乎不完整。。。14/7没有循环小数。您缺少一个分子模分母等于0的检查-因此您的答案不完整。这就是我要指出的。谢谢大家!这是密码。。if(分子%分母==0)返回false;var primes=分母.primes();foreach(素数中的int n){if(n!=2&&n!=5)返回true;}返回false;