VB里,怎么把常数2定义成双精度?下面是我编的程序,运行了,只算n=50的时候,n=1000就不算了,究竟怎么把常数2定义成双精度呢?Dim yuanzhoulv As Double, n As Double Private Sub Command1_Click()yuanzhoulv = 2For n = 1 T
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/04 12:45:25
![VB里,怎么把常数2定义成双精度?下面是我编的程序,运行了,只算n=50的时候,n=1000就不算了,究竟怎么把常数2定义成双精度呢?Dim yuanzhoulv As Double, n As Double Private Sub Command1_Click()yuanzhoulv = 2For n = 1 T](/uploads/image/z/9594087-15-7.jpg?t=VB%E9%87%8C%2C%E6%80%8E%E4%B9%88%E6%8A%8A%E5%B8%B8%E6%95%B02%E5%AE%9A%E4%B9%89%E6%88%90%E5%8F%8C%E7%B2%BE%E5%BA%A6%3F%E4%B8%8B%E9%9D%A2%E6%98%AF%E6%88%91%E7%BC%96%E7%9A%84%E7%A8%8B%E5%BA%8F%2C%E8%BF%90%E8%A1%8C%E4%BA%86%2C%E5%8F%AA%E7%AE%97n%3D50%E7%9A%84%E6%97%B6%E5%80%99%2Cn%3D1000%E5%B0%B1%E4%B8%8D%E7%AE%97%E4%BA%86%2C%E7%A9%B6%E7%AB%9F%E6%80%8E%E4%B9%88%E6%8A%8A%E5%B8%B8%E6%95%B02%E5%AE%9A%E4%B9%89%E6%88%90%E5%8F%8C%E7%B2%BE%E5%BA%A6%E5%91%A2%3FDim+yuanzhoulv+As+Double%2C+n+As+Double+Private+Sub+Command1_Click%28%29yuanzhoulv+%3D+2For+n+%3D+1+T)
VB里,怎么把常数2定义成双精度?下面是我编的程序,运行了,只算n=50的时候,n=1000就不算了,究竟怎么把常数2定义成双精度呢?Dim yuanzhoulv As Double, n As Double Private Sub Command1_Click()yuanzhoulv = 2For n = 1 T
VB里,怎么把常数2定义成双精度?
下面是我编的程序,运行了,只算n=50的时候,n=1000就不算了,究竟怎么把常数2定义成双精度呢?
Dim yuanzhoulv As Double, n As Double
Private Sub Command1_Click()
yuanzhoulv = 2
For n = 1 To 2000
yuanzhoulv = yuanzhoulv * ((2 * n) ^ 2) / ((2 * n - 1) * (2 * n + 1))
If n = 50 Then
Text1.Text = yuanzhoulv
Else
If n = 1000 Then
Text1.Text = Text1.Text & Chr(13) + Chr(10) & yuanzoulv
End If
End If
Next n
End Sub
VB里,怎么把常数2定义成双精度?下面是我编的程序,运行了,只算n=50的时候,n=1000就不算了,究竟怎么把常数2定义成双精度呢?Dim yuanzhoulv As Double, n As Double Private Sub Command1_Click()yuanzhoulv = 2For n = 1 T
你自己在VB的立即窗口测试一下:
Print 30000 * 2
这样是会提示“溢出”的,改成下面这样:
Print 30000 * 2# '或者Print 30000# * 2
就不会出错了.
原理是30000和2两个数都是整型数(Integer)范围,所以VB就按Integer来进行计算,但它们相乘的结果60000却超出了Integer的范围,所以就溢出了.只要把这两个数的任何一个设为双精度浮点数(也可以是长整型数或单精度数),VB就会按双精度数来计算结果,这样就不会溢出了.
所以题目中要你把2设为双精度型的意思,就是要你把2写成2#的形式,即:
yuanzhoulv = yuanzhoulv * ((2# * n) ^ 2) / ((2 * n - 1) * (2 * n + 1))
注意,只需要任何一个2写成2#即可,用不着四个2都写成2#
但是,具体到你这条题目,2是无须写成2#的,因为第一个乘数yuanzhoulv已经是双精度型变量了,所以VB肯定会按双精度型来计算的,所以你的这行代码是没错的.
纵观你的全部代码,问题有几个:
1、Text1的MulitLine属性一定要设为True,否则的话n=50和n=1000时的两次运算结果是会显示在同一行的,不会如你所愿分两行显示;
2、Text1.Text = Text1.Text & Chr(13) + Chr(10) & yuanzoulv 这行最后面的yuanzoulv应该是yuanzhoulv才对;
3、Chr(13) + Chr(10)可以用VB内部常数vbCrLf来代替.
其他就没什么问题了.