我正在使用一个数据库,该数据库的限制是它可以存储的仅(数字)数据类型是一个双。我想要做的是选择某个行的编号并将其放入HTTP请求中。问题的核心是,我不知道这个数字是否应该有小数。
例如,如果double是ID,我就不能进行任何格式设置,因为获取HTTP请求的站点将被混淆。注意以下例子:
site.com/showid.php?id=12300000 // OK
site.com/showid.php?id=1.23E7 // Bad; scientific notation
site.com/showid.php?id=12300000.0 // Bad; trailing decimal解决这个问题的方法是将其转换为一个长。忽略了超长的问题,它解决了科学的表示法和(显然)尾随小数。这可能是一个可以接受的解决方案,但是如果代码不假设它是我们正在处理的if,那就太好了。例如,如果我要查询一个显示地图并且数字是坐标的站点,那么小数非常重要的呢?,那么,从长到长的转换不再是可以接受的。
简言之;
这个解决方案将被移植到C#和Java,所以我接受这两种语言的答案。(哦,我不知道该怎么称呼这个问题,如果你有更好的东西,可以随意改名。)
发布于 2009-10-28 09:22:27
以下是我自己的结论:
发布于 2009-10-28 08:53:29
为了补充gustafc的回答(他比我快1分钟),下面是C#的相关代码行:
MyDouble.ToString("0.################")或
string.Format("{0:0.################}", MyDouble);发布于 2009-10-28 08:31:28
既然如果值是整数(不管它是代表ID还是坐标),那么使用无尾随零的格式是安全的,那么为什么不把您在要点中描述的逻辑编成代码呢?例如(C#,但应该很容易地翻译成Java):
// Could also use Math.Floor, etc., to determine if it is integral
long integralPart = (long)doubleValue;
if ((double)integralPart == doubleValue)
{
// has no decimals: format it as an integer e.g. integralPart.ToString("D") in C#
}
else
{
// has decimals: keep them all e.g. doubleValue.ToString("F17")
}https://stackoverflow.com/questions/1635821
复制相似问题