玩转PowerBasic编程,数值转字符串精度突破

博客介绍了如何使用PB(PowerBuilder)编程时,通过自定义宏函数Str64来突破系统内置STR$和FORMAT$函数对于数值转换字符串的19位长度限制。实验表明,利用宏可以实现更高精度的转换,从而提高数值表示的精度。文章强调了创新思维在解决技术问题中的重要性。

使用PB的朋友都知道,系统内置了两个数值转字符串函数:

s$ = STR$(numeric_expression [, digits])

x$ = FORMAT$(num_expression [, [digits& | fmt$]])

 系统说明:

The maximum number of significant digits, in the range of 1 to 18

 表示转换的数值长度被限制在19位以内,大于部分将用0填补。

这个限制在不支持64位系统的编译器下是否可以突破呢?经过实验是可以的。

下面还是通过宏函数来定义一个,将数值转换为字符串的宏功能跳过系统限制。

#COMPILE EXE
#DIM ALL

MACRO FUNCTION Str64(a)
  MACROTEMP i,s,b
  LOCAL i AS INTEGER
  LOCAL s AS STRING
  LOCAL b AS BYTE
  FOR i=0 TO 128
      b = (FIX(a/(10^i)) MOD 10)
      s = STR$(b) + s
  NEXT i
END MACRO = LTRIM$(REMOVE$(s,$SPC), ANY "0")

FUNCTION PBMAIN () AS LONG

    MSGBOX "自定义数值转字符串函数:"+$CRLF+_
           Str64(10*(2^128))+$CRLF+$LF+_
           "系统字符串函数STR$():"+$CRLF+_
           STR$(10*(2^128))+$CRLF+$LF+_
           "系统字符串函数FORMAT$():"+$CRLF+_
           FORMAT$(10*(2^128),"#")

END FUNCTION  

下面是调用宏后的显示结果,精度提高了很多。

 总结:

只要善于思考方法还是多余问题的,我们总是能够找到解决问题的途径。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值