【发布时间】:2011-06-19 11:42:52
【问题描述】:
我有一些浮点值想要转换为字符串,我想在转换时保持格式相同,即 999.0000(float) -> 999.0000(String)。我的问题是当值在小数点后包含任意数量的零时,如前面的示例,在转换为字符串时它们被剥离,所以我最终得到的结果是 999。
我查看了MSDN 上toString() 方法的格式说明符,RoundTrip ('R') 说明符看起来会产生我想要的,但它只支持 Single、Double 和 BigInt 变量。浮点变量是否有这样的格式说明符?或者将值转换为双精度值会更容易吗?
更新:为了清楚起见,我想保留尾随零的原因是因为我正在比较小数位,即我正在比较两个值之间小数位后的位数。例如,1.00 和 1.00000 的小数点后位数不同。我知道这是一个奇怪的要求,它是为了工作,而且要求来自高层。
更新 2-3-11:
我想太多了,我正在从 txt 文件中读取数字,然后将它们解析为浮点数,我将修改程序以检查字符串值是小数还是整数。很抱歉浪费您的时间,虽然这很有见地。
【问题讨论】:
-
小数点后多少位?如果你想保持这种动态,假设值是正确的浮点数,那么使用 .ToString("G")
-
数字会有所不同,为简单起见,我想说小数点后的数字范围可能在 1 到 5 之间。
-
.ToString("G") 最适合可变范围
-
尝试了“G”说明符,但是当遇到像 999.0 这样的数字时,它返回 999。我想保留尾随零,作为一个字符串,我希望它是“999.0”跨度>
-
如果您想要文本文件中的字符串并且不需要实际值进行某些计算,为什么不直接将值读取为字符串而不将它们解析为浮点数有吗?如果您确实需要这些值,请解析它们但保留原始字符串。无论哪种方式,您都可以查看我的帖子,以便使用 ToString() 方法的格式参数更轻松地格式化数字。
标签: c# parsing numbers string-formatting