java有没有办法将通过会话获取的数据库中的双精度值转换为字符串?
我想将一个双精度值转换为字符串,并显示在HTML输入标记中。 代码:
<input type="text" class="form-control" value="91"> <input
type="text" value="<%=details.getPhno()%>" class="form-control"
readonly>
你可以在下面搜索框中键入要查询的问题!
我想将一个双精度值转换为字符串,并显示在HTML输入标记中。 代码:
<input type="text" class="form-control" value="91"> <input
type="text" value="<%=details.getPhno()%>" class="form-control"
readonly>
# 1 楼答案
你。。。有电话号码。。。存储作为替身
你不能那样做
双打给你错误的答案。它们并不精确。计算机不是魔法,它们有局限性。双精度存储在64位中。所以,根据基本数学,最多有2^64个唯一的双精度。没有比这更多的了。2^64是一个很大的数字,但与负无穷大和正无穷大之间存在的数字相比,这算不了什么,正无穷大比2^64大两个整数级
它的工作方式如下:有2^64(略低于这个数字)“受祝福的”数字。这些数字可以存储为两倍。所有其他数字(非受祝福的)都是静默的四舍五入到最近的受祝福数字
稍微简单一点,这些受祝福的数字并不是平均分布的。接近1.0(和-1.0)时,有很多em。当你离它越远(比如说,几百万)时,em就越少
这意味着你永远不应该把任何ID(“数字”比如“添加1”是没有意义的。在电话号码中添加1是你永远不会做的事情)作为一个替身来存储。您将随机将您的号码从12345679更改为12345678,绝对没有任何警告
这也意味着“将双精度渲染为字符串”很棘手。因为例如,0.3不受祝福,所以它实际上存储为0.29999999546。这意味着当你把一个double渲染成一个字符串时,你必须告诉java你需要多高的精度。所以,你不需要做
Double.toString(...)
,你需要做String.format("%.2f", theNumber)
,告诉java:我并不是在寻找逗号后超过2位的精度所以,概括一下:
String.format("%.2f", theNumber)
,其中“2”表示需要小数分隔符后的位数李>