【发布时间】:2015-01-26 17:44:20
【问题描述】:
我在项目中具有比较对象值并显示差异的日志记录功能,但我有一个场景,我有双精度数据类型的纬度和经度值,但是当我将它与字符串连接或将其转换为字符串时,我得到了奇怪的行为,因为它在两个变量中显示相同的值,这是完全无法理解的。
代码如下:
double value1 = -6.2845230102539063;
double value2 = -6.2845230102539098;
if (!object.Equals(value1, value2))
{
var result = value2 + " to " + value1;
Console.WriteLine(result);
}
Console.ReadLine();
预期输出:
-6.2845230102539098 到 -6.2845230102539063
实际输出:
-6.28452301025391 到 -6.28452301025391
这里是DEMO FIDDLE:
https://dotnetfiddle.net/0XM3Da
这里发生了什么?
【问题讨论】:
-
值刚刚结束可能是由于 var 的大小限制!
-
是的,它看起来像精度问题,但我不确定,因为它支持 16 位精度
标签: c# string double tostring string-concatenation