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

使用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  

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

 总结:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值