[英]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.