社区
Delphi
帖子详情
一个实型数据的转换
NoMore
2012-09-08 10:11:05
一个实型数据如何以整型数据存储,有举例来看看。
...全文
178
11
打赏
收藏
一个实型数据的转换
一个实型数据如何以整型数据存储,有举例来看看。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
日立奔腾浪潮微软松下联想
2012-09-14
打赏
举报
回复
[Quote=引用 10 楼 的回复:]
直接赋值?
[/Quote]
差不多吧,不过Delphi有absolute:
var
d: double;
i: uint64 absoulte d;
begin
d := 1000.123;
// 保存i就是保存d了
end;
NoMore
2012-09-13
打赏
举报
回复
不会吧,总有办法吧。各位出出招吧。
lhy
2012-09-13
打赏
举报
回复
直接赋值?
日立奔腾浪潮微软松下联想
2012-09-13
打赏
举报
回复
可以把single当成cardinal,double当成uint64保存。
kaikai_kk
2012-09-13
打赏
举报
回复
用2个int字段,把一个实数拆开来分开存储? 是这意思吗?
那怎么行,比如10.0025,小数部分保存进去后是25,那当然不对了
说说为什么要这么做?
hsfzxjy
2012-09-13
打赏
举报
回复
楼主是说:12.345,a保存12,b保存345么
luck8000
2012-09-08
打赏
举报
回复
楼上说的已经非常详细了,如果仅仅想四舍五入的话,在原值上加上0.5,然后取整就可以,除非有特殊要求。
babydog01
2012-09-08
打赏
举报
回复
1.Round(四舍六入五留双)
功能说明:对一个实数进行四舍五入。(按照银行家算法)
例:
var
i, j: Integer;
begin
i := Round(1.5); // i等于2
j := Round(2.5); // j等于2
end;
在Delphi中使用Round函数得到的答案有时与我们所预期的会不太一样:采用的是四舍六入五留双。即当舍或入位大于或小于五时按四舍五入来处理
,而当舍或入位等于五时,就要看前面一位是什么,根据奇进偶不进,它总是返回一个偶数值。
例:
i:= Round(11.5)//i等于12
i:= Round(10.5)//i等于10
这种Round其实是按照银行家算法,统计学上一般都用这种算法,比传统的"四舍五入"要科学。
如果要使用传统的"四舍五入"方法,可以使用下面函数:
function RoundClassic(R: Real)
2.trunc(取得X的整数部分)
如:trunc(-123.55)=-123, floor(123.55)=123
3.ceil(取得大于等于X的最小的整数)
如:ceil(-123.55)=-123, ceil(123.15)=124
4.floor(取得小于等于X的最大的整数)
如:floor(-123.55)=-124,floor(123.55)=123
注:floor和ceil是math unit里的函数,使用前要先Uses Math
function Int(X: Extended): Extended;//取整 注意它返回的是Extended类型它也是浮点型哦
function Round(X: Extended): Int64;//四舍五入
function Trunc(X: Extended): Int64;//将小数无条件舍去
floor 直接往小的取,比如 floor(-123.55)=-124,floor(123.55)=123
trunc 直接切下整数,比如 trunc(-123.55)=-123, floor(123.55)=123
ceil 直接往大的取,比如 ceil(-123.55)=-123, ceil(123.55)=124
round 计算四舍五入,比如 round(-123.55)=-124,round(123.55)=124
floor 和 ceil 是 math unit 里的函数,使用前要先 Uses Math。
trunc 和 round 是 system unit 里的函数,缺省就可以用。
//真正的四舍五入
function myround(const yuan: Extended; const pp: Integer): Extended;
//yuan:原浮点数,PP保留 小数点后第几位
var
p,l,m,l2:Longint;
s:string; // 原浮点数
sq:string; // 小数点前
sh:string;//小数点后
begin
if yuan=0 then exit;// 原浮点数 0
if pp<0 then exit; //非法小数点后第几位
s:=floattostr(yuan);
p:=pos('.',s); //小数点位置
sq:=midstr(s,1,p-1);
sh:=midstr(s,p+1,length(s)-length(sq)-1);
l:=length(sh);//小数位数
l2:=length(sq);//整数位数
if pp>=l then
begin//0
result:=strtofloat(s);
exit;//比如 11。06 要保留到 小数点后第3位显然 不合理
end;//
{ if pp=l then //比如 11。06 要保留到 小数点后第2位不用处理 直接返回
begin//1
Result:=s;
exit;
end;//1 }
if pp<l then //比如 11。06 要保留到 小数点后第1位 ,。。。
begin//2
m:=strtoint(sh[pp+1]);
if m>=5 then
begin
if pp>=1 then //保留到 小数点后第1,2。。。位
begin//3
sh:=midstr(sh,1,pp);
sh := inttostr(strtoint(sh)+1);
if length(sh)>pp then
begin
sh:= midstr(sh,2,pp);
sq:= inttostr(strtoint(sq)+1);
end;
Result:=strtofloat(sq+'.'+sh);
exit;
end//3
else //保留到 小数点后第0位
begin//4
sq[l2]:=chr(ord(sq[l2])+1);
Result:=strtofloat(sq);
exit;
end;//4
end
else
begin
if pp>=1 then //保留到 小数点后第1,2。。。位
begin//3
sh:=midstr(sh,1,pp);
Result:=strtofloat(sq+'.'+sh);
exit;
end//3
else //保留到 小数点后第0位
begin//4
Result:=strtofloat(sq);
exit;
end;//4
end;
end;//2
end;
hsfzxjy
2012-09-08
打赏
举报
回复
小数部分不能用整型变量存取。。根本没这回事!
NoMore
2012-09-08
打赏
举报
回复
to babydog01
你的方法是如何取整。
我要的是把一个实型数据的整数部分和小数部分都用整型数据存储。怎么做??谢谢了
NoMore
2012-09-08
打赏
举报
回复
我的意思是:一个实型数据比如1000.123,把1000用整型类型存储,把.123变成整型数据用整型类型存储。怎么进行,可有更详细的做法???
C语言程序设计-
实型
数据
.pptx
实型
数据
十进制形式:由数字和小数点组成实数,如3.1415926,9.8,-3.6等。 指数形式:由字母e(或E)连接两边的数字组成,一般用于科学计数法。 如:108用科学计数法可表示为1.08E2,其中1.08称为尾数,2称为指数。 3-1
实型
常量
实型
变量又称为浮点变量,按能够表示数的精度大小。 3-2
实型
变量 类型说明符 取值范围 精度 存储字节数 float -1 038~1 038 7 4 double -1 0308~10 308 15~16 8 表2.2
实型
变量的取值范围、精度和存储长度 谢 谢 观 看
C语言
实型
数据
的编码和存储.pdf
C语言
实型
数据
的编码和存储
C语言
数据
类型
转换
实例代码
数据
类型
转换
就是将
数据
(变量、表达式的结果)从一种类型
转换
到另一种类型。例如,为了保存小数你可以将int类型的变量
转换
为double类型。
数据
类型
转换
的一般格式为: (type_name) expression type_name为要
转换
到的
数据
类型,expression为表达式。例如: (float) a; //把a
转换
为
实型
(int)(x+y); //把x+y的结果
转换
为整型 (float) 100; //将
一个
常量
转换
为
实型
【示例】将整数
转换
为浮点数: #include
int main(){ int sum = 17, count = 5; doub
C语言
实型
转字符串
这是我课余时间自己写的函数包,一般情况下足够用了,欢迎您的使用,如在使用过程中发现任何bug,希望您能通过邮件联系我,联系方式在函数包中
STM32—C语言
数据
类型核心知识
STM32—C语言
数据
类型核心知识
Delphi
5,928
社区成员
262,931
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章