我有一个双精度的文本表示,想知道将它往返双精度和返回是否安全。如果我还想接受任何类型的数字样式的输入,我怎么知道这一点?或者我如何知道使用 Double.Parse 解析双字符串时是否丢失了任何精度?或者我如何 ToString 一个 double 以匹配与另一个双字符串相同的格式?我认为任何这些问题的答案都是一个解决方案。
问问题
1931 次
2 回答
5
使用R
格式说明符将 转换double
为 a string
:
myDouble.ToString("R")
请参阅MSDN 上的往返 ("R") 格式说明符。
往返 ("R") 格式说明符保证转换为字符串的数值将被解析回相同的数值。仅 Single、 Double和 BigInteger 类型支持此格式。
(强调我的)
于 2012-08-22T09:12:27.190 回答
-1
当然,这不是往返安全的,原因如下:
将字符串解析为双精度时,数字格式会丢失,因为双精度不包含有关其视觉表示的任何信息。
虽然字符串表示通常是十进制,但 double 是二进制浮点数。所以双精度中的 0.1 并不完全是 0.1,因为 0.1 的二进制表示没有有限多个数字。您可以解析为十进制而不是双精度以避免此问题。
我建议构建一个存储数字和字符串表示形式的结构。
于 2012-08-22T09:09:23.620 回答