| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1930 人关注过本帖
标题:关于高精度小数处理的问题
只看楼主 加入收藏
faqueerliu
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2019-8-9
收藏
 问题点数:0 回复次数:2 
关于高精度小数处理的问题
大家好,我有个问题想请教一下:
有一个时间数据(存于MySQL,类型为DateTime[3],即带三位毫秒的时间数据),现在要读取出来处理,使用ADO连接,如果采用field.asDatetime函数,则只能读取出包含年-月-日 小时-分-秒的数据,因此改用asSQLTimeStamp,这个返回结构中包含 年,月,日,时,分,秒,fractions(理解为毫秒或者更精细的时间数据),于是我需要将带毫秒的时间数据转换为一个浮点数进行下一步处理,问题就出在这里:
例如:返回一个SQLTimeStamp数据(2018/07/30 8:03:13.900),这个日期对应的浮点数是43311.3355775463,我想把毫秒数加在这个浮点数之后,即43311.3355775463900,因此操作如下:
在得到SQLTimeStamp之后,
1.获取正常日期数据(不包括毫秒数据,仅包含 年,月,日,时,分,秒)
2.获取该日期数据对应的浮点数
3.将该浮点数转化为文本,将毫秒数加到字符串末尾
4.将包含毫秒数据的字符串转化为浮点数,问题来了:
我需要转化的字符串为“43311.3355775463900”,但是通过strtofloat转换后始终只能得到6位小数(转换后得到43311.335578),后面被四舍五入,由于得到的数据精度达不到要求,无法在chart中得到正确的图形(X轴数据不正确),也使用过formatfloat的方法,得到的结果(结构体内的一个数,类型为extended,double也试过,类似的问题)始终无法满足精度要求,请问高精度的小数在Delphi中如何获取和保存?
谢谢!
搜索更多相关主题的帖子: 小数 处理 数据 毫秒 浮点数 
2019-08-09 23:47
cglzyz
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-1-28
收藏
得分:0 
浮点数精度问题,建议你可以用两部分分别储存,或者将所有数据都乘以百万来传递,看是否能提升小数点后精度。
2020-01-28 19:11
jdnyfz
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-4-20
收藏
得分:0 
可以用时间戳来存,就不用管小数点了
2020-04-20 18:34
快速回复:关于高精度小数处理的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040227 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved