C# 我怎么知道小数是否终止?
我正在创建一个程序,孩子们必须将十进制值(即0.xxxx-精度4)转换成分数 我需要知道分数是否终止,我的意思是: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
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;