5

我有一个双精度的文本表示,想知道将它往返双精度和返回是否安全。如果我还想接受任何类型的数字样式的输入,我怎么知道这一点?或者我如何知道使用 Double.Parse 解析双字符串时是否丢失了任何精度?或者我如何 ToString 一个 double 以匹配与另一个双字符串相同的格式?我认为任何这些问题的答案都是一个解决方案。

4

2 回答 2

5

使用R格式说明符将 转换double为 a string

myDouble.ToString("R")

请参阅MSDN 上的往返 ("R") 格式说明符。

往返 ("R") 格式说明符保证转换为字符串的数值将被解析回相同的数值。仅 Single、 Double和 BigInteger 类型支持此格式。

(强调我的)

于 2012-08-22T09:12:27.190 回答
-1

当然,这不是往返安全的,原因如下:

  1. 将字符串解析为双精度时,数字格式会丢失,因为双精度不包含有关其视觉表示的任何信息。

  2. 虽然字符串表示通常是十进制,但 double 是二进制浮点数。所以双精度中的 0.1 并不完全是 0.1,因为 0.1 的二进制表示没有有限多个数字。您可以解析为十进制而不是双精度以避免此问题。

我建议构建一个存储数字和字符串表示形式的结构。

于 2012-08-22T09:09:23.620 回答