我有以下难题。在C#中,我想存储一个有理数并获得它的十进制表示法的字符串表示。
通常我会使用float
或double
来存储数字并获取字符串,但我想要一个“高分辨率”十进制表示法。 double
数据类型在其字符串表示中仅提供大约16个字符。我正在寻找十进制表示法的字符串表示,以包含更多的字符,大约30-50将是理想的。我需要“高分辨率”来检查重复的子序列。
有理数可能很简单,但我希望字符串表示非常详细
示例:1/7
=> 0.1428571428571428571428571428
我的问题: .NET库中是否存在C#数据结构,它将存储和打印如上所述的有理数?
答案 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");
}