delphi保留2位小数?如何实现。

vara:real;begina:=1/9;showmessage(FloatToStr(a));end;得出来的结果是:0.1111111111。如何保留2位小数:0.... var a:real; begin a:=1/9; showmessage(FloatToStr(a)); end; 得出来的结果是:0.1111111111。 如何保留2位小数:0.11。 展开
 我来答
59分粑粑分享生活
高粉答主

2020-02-19 · 专注生活好物分享,解答日常方方面面的问题
59分粑粑分享生活
采纳数:326 获赞数:119830

向TA提问 私信TA
展开全部

delphi保留2位小数,实现的方法如下:

x := Round(x * 100) / 100;

在USER部分加入MATH单元后可以使用

x:=RoundTo(y, 2)

或者用以下办法:

x=a/b;

x=strtofloat(formatfloat('0.00',x));

扩展资料:

在日常编程中,经常遇到需要设置保留小数点后几位小数的应用,比如,日常票据中大多数货币保留2位小数,即“元”为单位时,精确到“分”。

在 delphi 语言中,保留几位小数,可以使用功能函数,示例的代码如下:

procedure TForm1.Button2Click(Sender: TObject);

var

a: real;

b1: Single;      //浮点类型

b2,b3: Currency; //货币类型,精确到小数点后四位

begin

a := 1 / 9;

 //直接将 RoundTo 的结果传入,

//如果再转存为其他浮点数,就会导致误差

ShowMessage(FloatToStr(RoundTo(a, -2)));

 //保留2位小数,四舍五入

b1 := RoundTo(a, -2);

ShowMessage(FloatToStr(b1));

 //保留2位小数,四舍五入

b2 := SimpleRoundTo(a);

ShowMessage(FloatToStr(b2));

 //保留2位小数,不四舍五入

b3 := Trunc(a *100)/100;

ShowMessage(FloatToStr(b2));

end;

windblast
2017-03-27 · 知道合伙人软件行家
windblast
知道合伙人软件行家
采纳数:5633 获赞数:13622
毕业于空军第一航空学院电子专业,1991年开始接触电脑,从事多年计算机编程,具有较丰富的经验。

向TA提问 私信TA
展开全部

在日常编程中,经常遇到需要设置保留小数点后几位小数的应用,比如,日常票据中大多数货币保留2位小数,即“元”为单位时,精确到“分”。


在 delphi 语言中,保留几位小数,可以使用以下功能函数,这些函数大多定义在 Math 单元文件中:



或者直接使用简化的版本:



如果不需要在保留 2 位小数过程中进行四舍五入,则直接截取即可。


以下是示例的代码:


procedure TForm1.Button2Click(Sender: TObject);
var
  a: real;
  b1: Single;      //浮点类型
  b2,b3: Currency; //货币类型,精确到小数点后四位
begin
  a := 1 / 9;

  //直接将 RoundTo 的结果传入,
  //如果再转存为其他浮点数,就会导致误差
  ShowMessage(FloatToStr(RoundTo(a, -2)));

  //保留2位小数,四舍五入
  b1 := RoundTo(a, -2);
  ShowMessage(FloatToStr(b1));

  //保留2位小数,四舍五入
  b2 := SimpleRoundTo(a);
  ShowMessage(FloatToStr(b2));

  //保留2位小数,不四舍五入
  b3 := Trunc(a *100)/100;
  ShowMessage(FloatToStr(b2));
end;


代码示例截图:



需要提示的是:


在计算机中语言中,浮点数是一种“不精确”的数据类型,是“近似值”,比如,1.145 可能在计算机中实际是 1.144999999999999999.....,例如,本例中 0.11 实际存储的是0.10999999....。



如果确实需要精确的小数点后数值,比如,钱币计算,可以考虑使用 delphi 中特定的数据类型 Currency,这种数据类型可以确保小数点后四位都是确定值(不是“浮动”的近似值)。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
创作者hWecaOoIUH
高粉答主

2019-10-23 · 每个回答都超有意思的
知道大有可为答主
回答量:8570
采纳率:92%
帮助的人:1248万
展开全部

可以使用这样的办法: 

 x := Round(x * 100) / 100; 

在USER部份加入MATH单元后可以使用 

x:=RoundTo(y, 2) 

或者用以下办法:

x=a/b; 

x=strtofloat(formatfloat('0.00',x));

扩展资料

round函数的使用用法

根据Excel的帮助得知,round函数就是返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果。

round函数的语法是:ROUND(number,num_digits),即:Round(数值,保留的小数位数)

Number:需要进行四舍五入的数字。

Num_digits:指定的位数,按此位数进行四舍五入。

其中,如果 num_digits 大于 0,则四舍五入到指定的小数位。

如果 num_digits 等于 0,则四舍五入到最接近的整数。

如果 num_digits 小于 0,则在小数点左侧进行四舍五入。

=ROUND(3.19, 1) 将 3.19 四舍五入到一个小数位 (3.2)

=ROUND(2.649, 1) 将 2.649 四舍五入到一个小数位 (2.6)

=ROUND(-5.574, 2) 将 -5.574 四舍五入到两小数位 (-5.57)

=ROUND(18.8, -1) 将 18.8 四舍五入到小数点左侧一位 (20)。这个参数-1表示取整到十位数。

参考资料来源:百度百科-round函数

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
TD哥哥7211
2014-06-16 · TA获得超过139个赞
知道答主
回答量:138
采纳率:0%
帮助的人:63.2万
展开全部
a:=strtofloat(formatfloat('0.00',a)); showmessage(FloatToStr(a));
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
可槐鉴业视3721
2014-06-17 · TA获得超过136个赞
知道答主
回答量:117
采纳率:0%
帮助的人:173万
展开全部
showmessage(FormatFloat('0.00',a));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式