建议在C#中使用高精度数的好方法

时间:2009-11-03 17:24:15

标签: c# key precision

我正在编写一个项目,我应该将用户的密钥存储到机器的初始配置中,我想用C#编写它。

我有一个初始配置,由两个数字R和X0组成,R = 3.9988,X0 = 0.5。我想将用户密钥添加到这些数字。例如:

键:hos110 =>

  • R = 3.9988104111115049049048
  • X0 = 0.5104111115049049048

104111115049049048是连接密钥的ASCII码。

我如何存储这些数字?

有没有更好的方法呢?

更新:MATLAB怎么样?

7 个答案:

答案 0 :(得分:5)

你并没有真正“添加”数字。你是连接字符串。

将它们存储为字符串。您无法获得更精确的信息。

如果你需要执行任何算术运算,很容易将它们动态转换为十进制数。

答案 1 :(得分:4)

我并不真正理解为什么你使用密钥作为数字的一部分,但把它放在一边...... System.Decimal(又名decimal)似乎是正确的工具这里。

答案 2 :(得分:2)

如果您需要无限精度,则需要一些名为BigInteger的东西。但是,这些类通常仅用于科学计算(通常不适用于数据处理),这似乎与您的代码示例不匹配。如果只需要进行常规计算,请使用字符串,然后将它们转换为Decimal进行计算。

但是,如果您正在寻找这样一个BigInterger类,您可以找到一个here

.Net 4.0将在名为System.Numerics.BigInteger的类库中拥有一个BigInteger内置类。

答案 3 :(得分:1)

那么,根据您尝试实现的精确度,您可以将它们保存为一对decimal值。

但是,如果这是ASCII码,您可能只想将它们直接保存为字符串。这将避免数值精度问题,特别是如果您要在使用此信息之前启动104111 ....

答案 4 :(得分:0)

您似乎正在存储“密钥”,那么为什么不使用String呢?

答案 5 :(得分:0)

浮点数本质上是不精确的。我不确定这个'初始配置'是什么或为什么它是一个浮点数,但是你无法使用'用户密钥'(无论可能是什么)并在以后恢复它。将用户密钥分别存储在字符串或其他内容中。

答案 6 :(得分:0)

如果这些'数字'没有数值,即你不会将它们用于数学计算,那么就不需要将它们存储在数值数据类型中。您可以将它们存储为字符串。