vb里是single。java里可以自己定。 如果你要double。 试试,抄来的。 Public Function dblRnd() As Double Const Power15 As Long = 2 ^ 15 Const Power16 As Long = 2 ^ 16 Const LongMax As Long = 2 ^ 31 - 1 Dim lngValHi As Long Dim lngValLo As Long
那试试这个 Private Sub Command1_Click() Dim lng As Variant
lng = decRnd
MsgBox Format(lng, "0.0000000000000000") End SubPublic Function decRnd() As Variant Const Power15 As Long = 2 ^ 15 Const Power16 As Long = 2 ^ 16 Const LongMax As Long = 2 ^ 31 - 1 Dim lngValHi As Long Dim lngValLo As Long
decRnd = CDec(lngValHi * Power16 Or lngValLo) / LongMaxEnd Function
试试 Private Sub Command1_Click() Dim lng As Variant
lng = decRnd
MsgBox Format(lng, "0.0000000000000000") End SubPublic Function decRnd() As Variant Const Power15 As Long = 2 ^ 15 Const Power16 As Long = 2 ^ 16 Const LongMax As Long = 2 ^ 31 - 1 Dim lngValHi As Long Dim lngValLo As Long
decRnd = CDec(lngValHi * Power16 Or lngValLo) / LongMaxEnd Function
Private Sub Command1_Click() Dim lng As Variant
lng = decRnd
MsgBox Format(lng, "0.0000000000000000") End SubPublic Function decRnd() As Variant Const Power15 As Long = 2 ^ 15 Const Power16 As Long = 2 ^ 16 Const LongMax As Long = 2 ^ 31 - 1 Dim lngValHi As Long Dim lngValLo As Long
decRnd = CDec(lngValHi * Power16 Or lngValLo) / LongMaxEnd Function
Math.random()得到的是结果是小数点后有16位。
两个rnd如何接?能得到小数点15位的随机数?
搞不懂楼上这么多高手是怎么了,不愿意传授还是真不知道啊?(勿怪……) Function GetRandom() As String Dim objScrCtl As Object Set objScrCtl = CreateObject("MSScriptControl.ScriptControl") objScrCtl.Language = "JavaScript" GetRandom = "0" & objScrCtl.Eval("Math.random()") Set objScrCtl = Nothing End Function这样不就行了么?
如果你要double。
试试,抄来的。
Public Function dblRnd() As Double Const Power15 As Long = 2 ^ 15
Const Power16 As Long = 2 ^ 16
Const LongMax As Long = 2 ^ 31 - 1 Dim lngValHi As Long
Dim lngValLo As Long
lngValHi = Int(Rnd * Power15)
lngValLo = Int(Rnd * Power16)
dblRnd = CDbl(lngValHi * Power16 Or lngValLo) / LongMaxEnd Function
Private Sub Command1_Click()
Dim lng As Variant
lng = decRnd
MsgBox Format(lng, "0.0000000000000000")
End SubPublic Function decRnd() As Variant Const Power15 As Long = 2 ^ 15
Const Power16 As Long = 2 ^ 16
Const LongMax As Long = 2 ^ 31 - 1 Dim lngValHi As Long
Dim lngValLo As Long
lngValHi = Int(Rnd * Power15)
lngValLo = Int(Rnd * Power16)
decRnd = CDec(lngValHi * Power16 Or lngValLo) / LongMaxEnd Function
Private Sub Command1_Click()
Dim lng As Variant
lng = decRnd
MsgBox Format(lng, "0.0000000000000000")
End SubPublic Function decRnd() As Variant Const Power15 As Long = 2 ^ 15
Const Power16 As Long = 2 ^ 16
Const LongMax As Long = 2 ^ 31 - 1 Dim lngValHi As Long
Dim lngValLo As Long
lngValHi = Int(Rnd * Power15)
lngValLo = Int(Rnd * Power16)
decRnd = CDec(lngValHi * Power16 Or lngValLo) / LongMaxEnd Function
Dim lng As Variant
lng = decRnd
MsgBox Format(lng, "0.0000000000000000")
End SubPublic Function decRnd() As Variant Const Power15 As Long = 2 ^ 15
Const Power16 As Long = 2 ^ 16
Const LongMax As Long = 2 ^ 31 - 1 Dim lngValHi As Long
Dim lngValLo As Long
lngValHi = Int(Rnd * Power15)
lngValLo = Int(Rnd * Power16)
decRnd = CDec(lngValHi * Power16 Or lngValLo) / LongMaxEnd Function
Function GetRandom() As String
Dim objScrCtl As Object
Set objScrCtl = CreateObject("MSScriptControl.ScriptControl")
objScrCtl.Language = "JavaScript"
GetRandom = "0" & objScrCtl.Eval("Math.random()")
Set objScrCtl = Nothing
End Function这样不就行了么?