提问人:SisMaster 提问时间:8/17/2022 最后编辑:Eirik A.SisMaster 更新时间:8/22/2022 访问量:245
浮点型字段显示的小数位数多于字段大小
Float Field showing more decimal places than field size
问:
我正在从带有 MySQL 4.1 的 Delphi Seattle 10 迁移到带有 MySQL 5.7 的 Delphi Alexandria 11.1。
在那之后,我发现 字段类型有问题 ,使用该组件,这会从数据库中带来不同的结果。例如:FLOAT(16,6)
TFDQuery
=>TFDQuery
:
select ALTURA, LARGURA from tabprodutos (without ";")
ALTURA = 0,0199999995529652
LARGURA = 0,150000005960464
select ALTURA, LARGURA from tabprodutos; (with ";")
ALTURA = 0,02
LARGURA = 0,15
=>HeidiSQL 或 PHPMyAdmin:
select ALTURA, LARGURA from tabprodutos (with ";")
select ALTURA, LARGURA from tabprodutos; (without ";")
ALTURA = 0,020000
LARGURA = 0,150000
使用该组件,通过编写带有和不带有 “;” 的脚本来获得不同的结果,这个问题在 Delphi Seattle 中没有发生。在此示例中,我们需要并记录在数据库中的值是 0.02 和 0.15TFDQuery
我已经验证了字段不会发生问题,但我们希望保留字段并找到其他解决方案,方法是更改组件的某些参数、数据映射或其他解决这种情况的过程。DECIMAL
FLOAT
我知道打开是一种选择,但在整个系统上更改它们并不容易,所以有人知道是否有最佳解决方案吗?FormatFloat
FieldEditor
答: 暂无答案
下一个:bc 精确到小数点后几位?
评论
FLOAT(M, D)
并不意味着可以表示数字的十进制格式。它意味着具有足够精度的浮点格式,可用于存储最多 M 位数字的数字,因为原始值可以唯一区分——在转换为浮点格式后,将其转换为具有有效数字的十进制(即,将浮点数四舍五入到最接近的十进制数字)再现原始值......M
M
M
FLOAT(M, D)
FLOAT(P)