社区
Delphi
帖子详情
一个实型数据的转换
NoMore
2012-09-08 10:11:05
一个实型数据如何以整型数据存储,有举例来看看。
...全文
190
11
打赏
收藏
一个实型数据的转换
一个实型数据如何以整型数据存储,有举例来看看。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
它由
一个
数字(尾数)、字母e或E以及
一个
指数组成。例如,108在科学记数法中可以写作1.08E2,其中1.08是尾数,2是指数,意味着1.08乘以10的2次方。 在C语言中,
实型
数据
被分为两种类型:float和double。 3. **...
C语言
实型
数据
的编码和存储.pdf
《C语言
实型
数据
的编码和存储》这篇文章探讨了C语言中
实型
数据
的编码和存储方式,主要涉及float型、double型和long double型三种
数据
类型。在Turbo C 2.0环境下,这三种类型的编码长度分别为4字节(32位)、8字节...
C语言
数据
类型
转换
实例代码
数据
类型
转换
就是将
数据
(变量、表达式的结果)从一种类型
转换
到另一种类型。例如,为了保存小数你... //将
一个
常量
转换
为
实型
【示例】将整数
转换
为浮点数: #include int main(){ int sum = 17, count = 5; doub
C语言
实型
转字符串
这个压缩包提供了
一个
自定义的函数包,用于将C语言中的
实型
变量
转换
为字符串形式。下面我们将详细讨论这个过程,以及如何使用提供的文件。 首先,`typedouble2typestring.h` 是头文件,它通常包含函数声明和必要的...
STM32—C语言
数据
类型核心知识
* 注:强制类型
转换
时,得到
一个
所需要的中间变量,原来变量的类型未发生变化。 因此,在STM32编程中,了解
数据
类型的定义和
转换
规则非常重要,可以避免出现不确定的错误,提高程序的可靠性和效率。
Delphi
5,935
社区成员
262,943
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章