回 帖 发 新 帖 刷新版面

主题:为什么以0开头的小数不显示小数前的0呀?

为什么以0开头的小数不显示小数前的0呀?例如在文本框里显示0.12345它会只显示.12345呢?并且最奇怪的是怎么同样的程序有的机器是不显示前面的0,而有的机器却会自动显示前面的0?[em10]

回复列表 (共9个回复)

沙发

无代码,无真相。

不过,估计format就可以解决。

板凳

是否显示小数点前的0,与用户在控制面板“区域或语言选项”中的设置有关,要解决这个问题,可按照一楼说的用格式化的数据来显示。

3 楼

对不起,问题没有说清楚,给大家添加麻烦了!现重新提问如下:
设窗体上有两个文本框和一个命令按钮,命令按钮的click事件代码为:
Private Sub Command1_Click()
    Text2.Text = 1 / Val(Text1.Text)
End Sub
这就是在求分数嘛,先不管这个程序的界面是否合理,问题是程序运行时,在text1中输入3,单击命令按钮,则在text2中显示的结果在不同的机器上为什么不一样呢?有的机器显示0.333333333333333,而有的机器显示.333333333333333-------------也就是有的机器在显示以0开头的小数时,为什么不显示小数点前面的那个0呢?

4 楼

我希望自己的程序无论在什么机型的机器上都能显示"正常",即以0开头的小数应该显示这个0,于是,我设置了判断:
If Left(Text2.Text, 1) = "." Then
           Text2.Text = "0" + Text2.Text
End If
后来发现,以0开头的正小数是解决了,可如果这个小数是负的又不行了!哭~~~~~可怎么改才好呢?为什么不同的机器会有这样的不同结果呢?我反复观察了它们在控制面板中的区域或语言选项,觉得没有什么区别呀!

5 楼

Text1.Text = Format$(1 / Val(Text1.Text), "0.00")

6 楼

[quote]Text1.Text = Format$(1 / Val(Text1.Text), "0.00")
[/quote]
这样的确好象可以解决,但会有新的问题产生:如果在text1中输入0.5,则结果显示2.00,而这小数点后的两个没什么用的0又是我不希望的。这没完没了的问题怎么解决呢?
还有,请问为什么有的计算机根本就不存在这种显示精度的问题而有的计算机却存在这问题呢?
我办公室的电脑和笔记本都不存在.12345这种显示格式,它们会自动地显示0.12345;而机房四五十台电脑却都是.12345这种格式。这是为什么咧~~[em10]
郁闷呀,也就是说,我原本做得好好的代码一拿到机房就出问题了!

7 楼

[quote]显示2.00,而这小数点后的两个没什么用的0又是我不希望的[/quote]
也就是说,结果的小数位数是不固定的,只是希望0~1之间的小数要显示前导0,如果是浮点数,显示小数但不指定小数点后的位数;如果是整数,不显示小数点后的数?
目前我还没有找到现成的函数。
不过可以自己处理
Dim s As String
s = CStr(1 / Val(Text1.Text))
If Left$(s, 1) = "." Then
    s = "0" & s
ElseIf Left$(s, 2) = "-." Then
    s = Replace$(s, "-", "-0")
End If
Text1.Text = s

8 楼


Dim a, b As Double
Dim c As Double
a = Val(Text1.Text)
b = Val(Text2.Text)
c = a / b
If a < b Then
MsgBox Format(c, "0.#######")
Else
MsgBox Format(c, "")
End If

你想小数位后面保留几位小数就输几个“#”就可以啦!!

9 楼


谢谢楼上的高手们!
我还想再追问一句:为什么不同的机器会有如此不同的显示效果呢?

我来回复

您尚未登录,请登录后再回复。点此登录或注册