C#以高分辨率打印有理数

时间:2012-08-28 05:16:45

标签: c# decimal-point rational-numbers

我有以下难题。在C#中,我想存储一个有理数并获得它的十进制表示法的字符串表示。

通常我会使用floatdouble来存储数字并获取字符串,但我想要一个“高分辨率”十进制表示法。 double数据类型在其字符串表示中仅提供大约16个字符。我正在寻找十进制表示法的字符串表示,以包含更多的字符,大约30-50将是理想的。我需要“高分辨率”来检查重复的子序列。

有理数可能很简单,但我希望字符串表示非常详细

示例:1/7 => 0.1428571428571428571428571428

我的问题: .NET库中是否存在C#数据结构,它将存储和打印如上所述的有理数?

2 个答案:

答案 0 :(得分:3)

Base Class Library's CodePlex site包含BigRational type,其中提供了"任意精度有理数类型。"这应该提供您希望的细节和精度。

答案 1 :(得分:0)

我可以通过此功能找到的唯一现有工作是the Rational class provided by Ken Johnson

这是一个实现你想要的例子:

[TestMethod]
public void FormatsAsDecimal()
{
    var oneSeventh = new Rational(1, 7);
    var oneSeventhAsDecimal = oneSeventh.ToString(EApproxmationType.DecimalPlaces, 28, true);
    oneSeventhAsDecimal.Should().Be("0.1428571428571428571428571428");
}