討論區快速選單
知識庫快速選單
政府補助!學嵌入式+物聯網 網路投保旅行平安險 軟體開發過程中有哪些資安漏洞?
[ 回上頁 ] [ 討論區發言規則 ]
VB.NET 2005 函數.程序運算
更改我的閱讀文章字型大小
作者 : kissjoan(joan)
[ 貼文 14 | 人氣 1003 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/21 下午 08:19:49
我想請問ㄧ下就事 該如何用函數運算和程序運算 後會出現小數點呢?

以下是我自己寫的
Public Class Form1
Function k(ByVal j As Single) As Single
Dim i As Single
k = 0.0
For i = 1 To j
k = k + i
Next
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim j As Single
j = TextBox1.Text
TextBox2.Text = k(j)
End Sub
Sub ki(ByVal j As Single, ByRef s As Single)
Dim i As Single
s = 0.0
For i = 1 To j
s = s + i
Next
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim j As Single
Dim s As Single
j = TextBox3.Text
Call ki(j, s)
TextBox4.Text = s
End Sub
End Class


要如何讓他會出現小數點

補充
 
TextBox2.Textformat(k(j),"0.0")
TextBox4.Text =format(s,"0.0")
只能讓他運算的時候加一個.0在後面並不能說
1.1+1.1=2.2
會變成1.1+1.1=2.0
我需要的事能夠使用函數跟程序
來變成1.1+1.1=2.2就是說他並不會像integer會四捨五入
請各位幫幫我
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/21 下午 09:33:16
你代入function中的值都是用來當成迴圈的次數而step也未見有指定...
本來就不會有泥說滴: 1.1+1.1=2.2 這種事發生...
再把自已的程式流程搞清楚一點再上來...
作者 : kissjoan(joan)
[ 貼文 14 | 人氣 1003 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/21 下午 09:36:38
能告訴我要怎麼寫嗎
我已經被搞混了@@"
作者 : wjowpo(PO)
[ 貼文 62 | 人氣 4363 | 評價 60 | 評價/貼文 0.97 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 上午 01:26:48
要將文字資料 放進 數值變數中時 [例如 : J = Text1.Text ]

建議養成習慣 加上 Val() 函數 寫成 J = Val ( Text1.Text ) 較好

還有 我想阿戊大大的意思是說 你測試時輸入的值 如果都是整數 那你寫的程式執行後輸出的結果 一定都會是整數 小數點之後 當然都是 .0 啦
作者 : wjowpo(PO)
[ 貼文 62 | 人氣 4363 | 評價 60 | 評價/貼文 0.97 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 上午 01:42:39
因為 你 For 迴圈中的 Step 省略時 預設值 為 +1

所以 只要是你輸入值為 整數 那輸出就都會是整數了

以下這個 不知道是不是你要的

1.1 + 1.1 + 1.1 + 1.1 + 1.1 + 1.1 = 6.6

如果是 程式寫法 如下

dim S as Single

s= 0
For I = 1 to 6 Step 1 ' I 為執行次數 當 Step 為 1 時 可省略 只寫 For I = 1 to 6
    s = s + 1.1 ' 1.1 每次加入值
next

Print format(S,"0.0") ' S = 6.6


作者 : kissjoan(joan)
[ 貼文 14 | 人氣 1003 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 上午 01:45:58
謝謝各位大大
但是我需要的寫法事
不管輸入拿一種數字
都可以跑出
假如:1.1迴圈完後=2.2
     5.1+5.1=10.2
作者 : kissjoan(joan)
[ 貼文 14 | 人氣 1003 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 上午 01:46:07
謝謝各位大大
但是我需要的寫法事
不管輸入拿一種數字
都可以跑出
假如:1.1迴圈完後=2.2
     5.1+5.1=10.2
作者 : wjowpo(PO)
[ 貼文 62 | 人氣 4363 | 評價 60 | 評價/貼文 0.97 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 上午 09:51:25
如果是像你說的 降子的話 根本也可以不用迴圈

一行指令的算式應該就可以囉

Dim J As Single '輸入值
Dim K As Integer '重複次數 倍數
Dim S As Single '總合

S = ( J + 0.1 ) * K ' <==

Text1.text = Format(S ,"0.0")
作者 : kissjoan(joan)
[ 貼文 14 | 人氣 1003 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 下午 01:09:23
Dim J As Single '輸入值
Dim K As Integer '重複次數 倍數
Dim S As Single '總合

S = ( J + 0.1 ) * K ' <==

Text1.text = Format(S ,"0.0")

這樣的話他會變成不管輸入什麼數字都匯市0.0
作者 : wjowpo(PO)
[ 貼文 62 | 人氣 4363 | 評價 60 | 評價/貼文 0.97 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 下午 01:42:23
抱歉 我應該寫的再詳細一點

'函數
Private Sub P_計算(J As Single, K As Integer)
   'J 輸入值 K 重複次數
   Dim S As Single '總合

   S = (J + 0.1) * K ' <==
   
   Text1.Text = Format(S, "0.0")
End Sub

' 用法
Call P_計算(1, 2) 'J = 1 輸入值 K = 2 重複次數

作者 : kissjoan(joan)
[ 貼文 14 | 人氣 1003 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 下午 01:46:43
還是依樣會出現0.0
@@"
作者 : wjowpo(PO)
[ 貼文 62 | 人氣 4363 | 評價 60 | 評價/貼文 0.97 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 下午 01:51:59
請把你的程式 貼出來再看看囉

作者 : kissjoan(joan)
[ 貼文 14 | 人氣 1003 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 下午 02:20:54
Public Class Form1
    Function SUM(ByVal a As Single, ByVal b As Single) As Single

     SUM = a + b
    End Function
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     Dim a, b As Single
     a = TextBox1.Text
     b = TextBox2.Text
     TextBox3.Text = SUM(a, b)
    End Sub
    Sub SUM_SUB(ByVal j As Single, ByVal s As Single, ByRef c As Single)

     c = j + s
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
     Dim j, s, c As Single
     j = TextBox1.Text
     s = TextBox2.Text
     Call SUM_SUB(j, s, c)
     TextBox4.Text = c
    End Sub
End Class


這是改了又改之後的程式
作者 : wjowpo(PO)
[ 貼文 62 | 人氣 4363 | 評價 60 | 評價/貼文 0.97 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 下午 02:40:44
建議可以在 呼叫函數 [ 如 Sum 或 Sum_Sub ] 之後 將值印出來

TextBox3.Text = SUM(a, b)
print a , b , Sum(a, b)

去抓看看到底是哪理出的問題

如果沒猜錯 應該是 你直接將 數值資料 [ Single ] 放進去 文字資料中 [ TextBox ]
或是 反過來 將 文字資料 直接放入 數值變數中 所產生的問題吧 供你參考看看囉 祝好運
作者 : kissjoan(joan)
[ 貼文 14 | 人氣 1003 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 下午 02:45:09
大大說的沒錯
是因為字串轉換成single是無效的
所以不能用
但是我也是過大大說的方法了還是不能用
因為這個程式是我的老師給的解答
但是我就是無法呼叫
不過我同學得就可以用
我跟我同學的是ㄧ樣的程式但是就是不能用
很奇怪
作者 : wjowpo(PO)
[ 貼文 62 | 人氣 4363 | 評價 60 | 評價/貼文 0.97 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 下午 03:10:40
山不轉路轉

把 要轉成 Single 的地方都加上 VAL() 函數

例如 J = VAL(Text1Box.Text)

或更仔細的話 我的習慣 會用 CSTR() 將 數值變數 轉成文字型態

例如 TextBox2.Text = Cstr(S) 或是 直接用 Format(S ,"0.0")

 我想 這樣做較保險吧 供你參考囉
作者 : kissjoan(joan)
[ 貼文 14 | 人氣 1003 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 下午 03:16:34
用了大大的方法後問題還是沒解決
當我在texbox1輸入一個數字後
她會再texbox2上出現同樣的"數字"
作者 : wjowpo(PO)
[ 貼文 62 | 人氣 4363 | 評價 60 | 評價/貼文 0.97 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 下午 03:17:36
再不然 就把所有宣告的 Single 都改成 Double 吧

因為 VAL() 輸出是 Double 形態的值

如果用 Single 是有可能會放不下的 [溢位]
作者 : wjowpo(PO)
[ 貼文 62 | 人氣 4363 | 評價 60 | 評價/貼文 0.97 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 下午 03:24:26
Public Class Form1
    Function SUM(ByVal a As Double, ByVal b As Double) As Double

     SUM = a + b
    End Function
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     Dim a, b As Double
     a = val(TextBox1.Text)
     b = val(TextBox2.Text)
     TextBox3.Text = Format(SUM(a, b),"#0.0")
    End Sub
    Sub SUM_SUB(ByVal j As Double, ByVal s As Double, ByRef c As Double)

     c = j + s
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
     Dim j, s, c As Double
     j = val(TextBox1.Text)
     s = val(TextBox2.Text)
     Call SUM_SUB(j, s, c)
     TextBox4.Text = Format(c ,"#0.0")
    End Sub
End Class
作者 : kissjoan(joan)
[ 貼文 14 | 人氣 1003 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 下午 04:23:41
可是如果是這樣的話
Public Class Form1
    Function SUM(ByVal a As Double, ByVal b As Double) As Double

     SUM = a + b
    End Function
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     Dim a, b As Double
     a = val(TextBox1.Text)
     b = val(TextBox2.Text)
     TextBox3.Text = Format(SUM(a, b),"#0.0")
    End Sub
    Sub SUM_SUB(ByVal j As Double, ByVal s As Double, ByRef c As Double)

     c = j + s
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
     Dim j, s, c As Double
     j = val(TextBox1.Text)
     s = val(TextBox2.Text)
     Call SUM_SUB(j, s, c)
     TextBox4.Text = Format(c ,"#0.0")
    End Sub
End Class


那麼就會便成
當我在TEXBOX1輸入ㄧ個值
TEXTBOX2會出現同樣的值
但是如會再多按依次BUTTON1的話
假如我輸入2.2TEXBOX2會出現2.2
在案依次BUTTON的話TEXBOX2的值才會翻倍=4.4
作者 : wjowpo(PO)
[ 貼文 62 | 人氣 4363 | 評價 60 | 評價/貼文 0.97 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 下午 04:42:44
1. 泥程式中的 TextBox1 與 TextBox2 不是都只有當輸入用嗎?
     TextBox2.Text 怎會隨程式執行而改變呢 ==> 是不是有其他的程式段有下
     [ TextBox2.Text = XXX ] 這類的指令 請你費心仔細檢查一下 若有 要先改一下
    
     換成 你的輸出用物件 [ 照你的程式內容應該是 TextBox3 跟 TextBox4 吧 ]

     是不是位置放太近 搞錯了呢 ?

2. 照你降子說 先前一直無法出現 小數值的狀況是否已經解決了呢 ?
作者 : kissjoan(joan)
[ 貼文 14 | 人氣 1003 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 下午 04:46:41
現在是會出現小數點了不過
現在他不會說加如我在TEXT1.TEXT中輸入1.2那嚜TEXT2.TEXT會出現2.4
現在是回出現TEXT1.TEXT中輸入1.2那TEXT2.TEXT會出現1.2
要再按一次才會出現2.4
作者 : wjowpo(PO)
[ 貼文 62 | 人氣 4363 | 評價 60 | 評價/貼文 0.97 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 下午 05:14:24
你說的意思是 想要 在 TextBox1 中輸入某值 而 能在 TextBox2.Text 中顯示出 輸入值的 兩倍嗎 ?

如果是固定的兩倍的話 把其中的 Private Sub Button1_Click 作修改就可以囉

     ' 在 TextBox1輸入 3.3 按按鍵 Button1 後 TextBox2 會得到 6.6

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     TextBox2.Text = Format(VAL(TextBox1.Text) * 2 ,"#0.000")
End Sub
作者 : kissjoan(joan)
[ 貼文 14 | 人氣 1003 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 下午 05:18:55
那這樣的話就根本不需要用到函數根程序了不是嗎?
可是這樣就不是我原本的用意了
作者 : wjowpo(PO)
[ 貼文 62 | 人氣 4363 | 評價 60 | 評價/貼文 0.97 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 下午 06:20:36
嗯 本來要達到同樣的功能 寫法就有許多種啦

如果 你是要用函數來達成 也是 OK的囉

寫法稍稍改一下就可了

Private Function F_Double(ByVal Z as Double) as Double
     F_Sum = Z * 2
End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     Dim a as Duble
     a = VAL(TextBox1.Text)
     TextBox2.Text = Format(F_Double(a) ,"#0.000")
End Sub
作者 : kissjoan(joan)
[ 貼文 14 | 人氣 1003 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 下午 06:28:19
那如果必須要時要+法不能用*法的或可以嗎?
作者 : wjowpo(PO)
[ 貼文 62 | 人氣 4363 | 評價 60 | 評價/貼文 0.97 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 下午 06:48:00
抱歉 你的意思我不是很清楚ㄋㄟ

不過偶有發現剛剛有個錯誤
Private Function F_Double(ByVal Z as Double) as Double
     F_Double = Z + Z ' <==這行剛剛的 F_Sum 是打錯的
End Function

' 你說的不用乘法 要用加的 是降子的意思嗎 若是 就請把 Z * 2 改成 => Z + Z

作者 : kissjoan(joan)
[ 貼文 14 | 人氣 1003 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/22 下午 07:16:45
那如果適用在程序方面的話也是可以依樣畫葫蘆嗎?
可是我試過了不太能用ㄝ....
 板主 : 小樓
 > Visual Basic 6.0/VBA - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual Basic 6.0/VBA - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual Basic 6.0/VBA
1 阿戊 10670 
2 小樓 8650 
3 Jones 5270 
4 水瓶天賞 2340 
5 joe 2230 
6 史努比 1950 
7 阿呆紅 1440 
8 tt's 1250 
9 青衫 1150 
10 羅啟章 1020 
Visual Basic 6.0/VBA
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.1875