delphi中formatFloat代码初探

本文介绍了在项目中如何在Qt环境下实现类似DelphiXE2的floatformat功能。作者详细研究了DelphiXE2的源码,特别是`System.SysUtils`单元中的`InternalFloatToTextFmt`函数,该函数有汇编和纯Pascal两种实现。文章主要关注纯Pascal版本,概述了从解析格式化字符串到使用`FloatToDecimal`将浮点数转换为十进制数字的整体流程。
摘要由CSDN通过智能技术生成

   由于项目需要,需要在qt下实现floatformat的函数。之前写过一个,但是写得不好。决定重新写一个,参考delphi xe2下的实现。把xe2下的相关代码都看了一遍,xe2的代码思路在这里贴出来。xe2下的代码在system.sysutils下,核心函数是InternalFloatToTextFmt。它有汇编的版本跟纯pascal的版本。汇编看不懂,参考的是纯pascal的版本。

  整体流程是:

1)解析format格式化字符串

 Result := 0;
  DecimalSep := AFormatSettings.DecimalSeparator;
 //根据系统取得小数点的符号
  ThousandsSep := AFormatSettings.ThousandSeparator;
 //根据系统取得千分位的符号。这两个最好也通过系统API来取,如果要做国际化的话,这两个在不同的系统上是不一样的。
  if ValueType = fvCurrency then
    Temp := Currency(Value)
  else
    Temp := Extended(Value);
  if Extended(Temp) > 0 then
    AIndex := 0
  else
    if Extended(Temp) < 0 then
      AIndex := 1
    else
      AIndex := 2;
  SectionIndex := FindSection(AIndex);
  Sect
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值