Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 9219|回复: 2

[已解决]Cstr 和Str的区别

[复制链接]
发表于 2008-12-20 17:02 | 显示全部楼层 |阅读模式

搜索到的:http://hi.baidu.com/%CD%F8%B3%E6360/blog/item/7676824a91f592f683025c47.html

Cstr 和Str有什么区别?在上机改错题中经常有这样的题目。

答:

从应试角度,综合列年改错题,两种最大的区别在于:
Cstr在将正数转换为数字字符串时,不在其前加:前导空格来暗示其正号;
而Str在将正数转换为数字字符串时,返回的字符串包含一前导空格暗示有一正号。

举例如下:
     Dim i As Single
     Dim cstr1 As String
     Dim str1 As String
     i = 10.3
     cstr1 = CStr(i)
     str1 = Str(i)
     Print Len(cstr1), Len(str1) '输出:4   5
     i = -10.3
     cstr1 = CStr(i)
     str1 = Str(i)
     Print Len(cstr1), Len(str1) '输出:5   5
简单的讲:
     Cstr(10.3)="10.3" Str(10.3)=" 10.3"
     Cstr(-10.3)="-10.3" Str(-10.3)="-10.3"

改错中,要当心,如果采用Str将正数转换为数字字符串,那么对该字符串在进行
逐位处理时,其循环次数将多了一次

另外:
按照MSDN介绍,通常Cstr后参数类型比较广泛,即:可以将Boolean,Date,Empty,数值转化为字符串。
而str后参数通常应该为数值。
但是根据实际测试,也不尽然。
请看下例:
     Private Sub Command1_Click()
         Dim t As Boolean
         Print Str(t)     '输出 False(前面有空格)
         Print CStr(t)    '输出False(前面没有空格)
     End Sub
最后输出结果是:
False
False

因此,Str总会在其参数前加上一位用于存放符号位,当然如果参数为负数,其已经包含负号,那么就不加了。
如: str("-10.3")="-10.3"

问题:

  1. 红色字中所说的,我不明白多了1次是什么意思?
  2. Cstr 和Str,是各有所长;还是历史原因,造成Cstr 是Str的增强版(这样比方可以么?)

谢谢!!

最佳答案
2008-12-20 20:15

1,采用Str将正数459转换为数字字符串的时候,前面有一个空位,得到的是" 459",所以如果用Len(" 459")=4,那么对该字符串在进行
逐位处理时,其循环次数就将多了一次

2,CStr后参数类型比较广泛,Str后参数类型就是Long,而且Str 函数只视句点 (.) 为有效的小数点。如果使用不同的小数点(例如,国际性的应用程序),可使用 CStr 将数字转成字符串。

发表于 2008-12-20 20:15 | 显示全部楼层    本楼为最佳答案   

1,采用Str将正数459转换为数字字符串的时候,前面有一个空位,得到的是" 459",所以如果用Len(" 459")=4,那么对该字符串在进行
逐位处理时,其循环次数就将多了一次

2,CStr后参数类型比较广泛,Str后参数类型就是Long,而且Str 函数只视句点 (.) 为有效的小数点。如果使用不同的小数点(例如,国际性的应用程序),可使用 CStr 将数字转成字符串。

回复

使用道具 举报

 楼主| 发表于 2008-12-20 22:23 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-24 17:01 , Processed in 0.362427 second(s), 4 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表