Loading ...
Sorry, an error occurred while loading the content.
 

[vb-indo] Re: Konversi dari Bilangan ke kalimat

Expand Messages
  • Syarif Lumintarjo
    ... From: Nasrullah@JKT-NECSEI1.ccgw.nec.co.jp To: vb-indo@egroups.com Date: 01 Januari 2000 11:46
    Message 1 of 15 , Jan 1, 2000
      -----Original Message-----
      From: Nasrullah@...
      <Nasrullah@...>
      To: vb-indo@egroups.com <vb-indo@egroups.com>
      Date: 01 Januari 2000 11:46
      Subject: [vb-indo] Re: Konversi dari Bilangan ke kalimat

      >Tapi kayaknya untuk bil pecahannya masih error....
      >mis: 7.03 dibaca Tujuh koma tiga Nol
      > 7.30 dibaca Tujuh koma dua sembilan
      >
      >- N4srul -

      Heran sekali saya... koq bisa gitu yaa, tapi abis itu saya coba
      dengan function spt dibawah ini,

      Function TestPecah(n As Double) As String
      Dim s$
      s = Str(n)
      TestPecah = s
      End Function

      dan ternyata hasilnya jika saya input TestPecah(7.24) hasilnya
      adalah 7.239999999. VB ini gimana sih??

      7.22 -> 7.22
      7.23 -> 7.23
      7.24 -> 7.23999999999999
      7.25 -> 7.24999999999999
      7.26 -> 7.25999999999999
      7.27 -> 7.26999999999999
      7.28 -> 7.27999999999999

      so, 7,24 pasti akan dibaca Tujuh Koma Dua Tiga. Ini semacam
      kecelakaan pembulatan... Bagaimana dg. netter yang lain, ada
      saran?

      --
      Syarif Lumintarjo
      syarifl@..., syarifl@...
      PGP: http://syarifl.homepage.com/pgp
      ICQ: http://wwp.icq.com/17357739
    • Sugioto
      Happy New Year 2000 Terima kasih semuanya telah membantu ... From: Syarif Lumintarjo To: Sent: Friday, December 31,
      Message 2 of 15 , Jan 2, 2000
        Happy New Year 2000

        Terima kasih semuanya telah membantu


        ----- Original Message -----
        From: Syarif Lumintarjo <syarifl@...>
        To: <vb-indo@egroups.com>
        Sent: Friday, December 31, 1999 8:14 AM
        Subject: [vb-indo] Re: Konversi dari Bilangan ke kalimat


        > -----Original Message-----
        > From: Sugioto <sugioto@...>
        > To: vb-indo@egroups.com <vb-indo@egroups.com>
        > Date: 30 Desember 1999 9:12
        > Subject: [vb-indo] Re: Konversi dari Bilangan ke kalimat
        >
        > >Coding yang anda berikan itu jalan
        > >cuma kalo saya masukin angka 1000 di bacanya satu ribu..............
        > >tapi bukan seribu
        >
        > Ha, ha, ha..., saya juga baru tahu, padahal udah lamaa banget saya pake
        > coding itu buat nyetak Kwitansi dan Faktur, baru ketahuan bugnya
        sekarang...
        > :)
        >
        > Terima kasih banyak nih bung Sugioto, sekarang saya perbaiki, trus saya
        > tambahin untuk bilangan pecahan, yaitu Function TerbilangPecah.
        >
        > NB: Karena ada perubahan yang agak banyak jadi yang coding yang kemaren
        > diganti aja semuanya.
        >
        > --
        > Syarif Lumintarjo
        > syarifl@..., syarifl@...
        > PGP: http://syarifl.homepage.com/pgp
        > ICQ: http://wwp.icq.com/17357739
        >
        > <--BEGIN CODE-->
        >
        > Function TerbilangPecah(n As Double) As String
        > Dim s$, s1$, s2$, n1 As Long, n2 As Long
        > s = Trim(Str(Int(n * 100)))
        > s2 = Right(s, 2): n2 = Val(s2)
        > s1 = Left(s, Len(s) - 2): n1 = Val(s1)
        > TerbilangPecah = Terbilang(n1) & " Koma " & SubSay(n2, True)
        > End Function
        >
        > Function Terbilang(n As Long) As String
        > Dim indoSayPower(3) As String
        > indoSayPower(1) = "Ribu"
        > indoSayPower(2) = "Juta"
        > indoSayPower(3) = "Milyar"
        > Dim s$, s2$
        > s2 = ""
        > s = Right("000000000" & Trim(Str(n)), 9)
        > Dim n3, n2, n1, n0
        > n2 = Mid(s, 1, 3)
        > n1 = Mid(s, 4, 3)
        > n0 = Mid(s, 7, 3)
        > s2 = s2 + IIf(n2 <> 0, SubSay(n2, False) + " " + indoSayPower(2) + " ",
        > "")
        > If n1 <> 0 Then
        > s2 = s2 + IIf(n1 = 1, "Seribu ", SubSay(n1, False) + " " +
        indoSayPower(1)
        > + " ")
        > End If
        > s2 = s2 + IIf(n0 <> 0, SubSay(n0, False), "")
        > Terbilang = Trim(s2)
        > End Function
        >
        > Private Function SubSay(ByVal n As Long, DirectConvert As Boolean) As
        String
        > Dim indoSayData(9) As String
        > indoSayData(0) = "Nol"
        > indoSayData(1) = "Satu"
        > indoSayData(2) = "Dua"
        > indoSayData(3) = "Tiga"
        > indoSayData(4) = "Empat"
        > indoSayData(5) = "Lima"
        > indoSayData(6) = "Enam"
        > indoSayData(7) = "Tujuh"
        > indoSayData(8) = "Delapan"
        > indoSayData(9) = "Sembilan"
        >
        > Dim s$, i%, s2$
        >
        > If DirectConvert Then
        > If n < 10 Then
        > s2 = indoSayData(n) + " Nol"
        > Else
        > s = Trim(Str(n))
        > s2 = indoSayData(Left(s, 1)) + " " + indoSayData(Mid(s, 2, 1))
        > End If
        > SubSay = Trim(s2)
        > Exit Function
        > End If
        >
        > s2 = ""
        > s = Right("000" & Trim(Str(n)), 3)
        >
        > Dim np(3) As Integer
        > For i = 1 To 3
        > np(i) = Mid(s, 3 - i + 1, 1)
        > Next i
        >
        > If np(2) = 1 Then
        > If np(1) = 0 Then
        > s2 = "Sepuluh"
        > ElseIf np(1) = 1 Then
        > s2 = "Sebelas"
        > Else
        > s2 = indoSayData(np(1)) & "belas " & s2
        > End If
        > Else
        > If np(1) <> 0 Then s2 = indoSayData(np(1))
        > If np(2) <> 0 Then s2 = indoSayData(np(2)) + " Puluh " + s2
        > End If
        >
        > If np(3) <> 0 Then
        > If np(3) = 1 Then
        > s2 = "Seratus " + s2
        > Else
        > s2 = indoSayData(np(3)) + " Ratus " + s2
        > End If
        > End If
        >
        > SubSay = Trim(s2)
        >
        > End Function
        >
        > <--END CODE-->
        >
        >
        > ------------------------------------------------------------------------
        > At Esurance.com you can buy customized insurance online. Call
        1-800-926-6012 and complete a quote today to start saving money tomorrow or
        just go to
        > http://click.egroups.com/1/611/4/_/22634/_/946661245
        >
        >
        > eGroups.com home: http://www.egroups.com/group/vb-indo
        > http://www.egroups.com - Simplifying group communications
        >
        >
        >
      • Nasrullah@JKT-NECSEI1.ccgw.nec.co.jp
        Buat rekan-rekan Vb-Indo, Programnya mas syarif itu sudah bagus, hanya ada beberapa bugs yang perlu di perbaiki. ini saya sertakan perbaikan beberapa
        Message 3 of 15 , Jan 2, 2000
          Buat rekan-rekan Vb-Indo,

          Programnya mas syarif itu sudah bagus, hanya ada beberapa bugs yang perlu
          di perbaiki. ini saya sertakan perbaikan beberapa functionnya. trus untuk
          bisa lebih dari 2 desimal di belakan koma, saya sertakan sebuah function
          tambahan "Function BanyakPecahan(Nilai, Pecahan As Boolean) As String"
          Selamat mencoba and salut buat mas syarif. Program Anda memberikan banyak
          ide pada saya....Thanks..

          - N4srul -

          1)Original :
          ----------
          Function TerbilangPecah(n As Double) As String
          Dim s$, s1$, s2$, n1 As Long, n2 As Long
          s Trim(Str(Int(n * 100)))
          s2 Right(s, 2): n2 Val(s2)
          s1 Left(s, Len(s) - 2): n1 Val(s1)
          TerbilangPecah Terbilang(n1) & " Koma " & SubSay(n2, True)
          End Function

          Modified :
          ----------
          Function TerbilangPecah(n) As String
          Dim s1$, s2$
          s2 = BanyakPecahan(n, True)
          s1 = BanyakPecahan(n, False)
          TerbilangPecah = Terbilang(s1) + IIf(Val(s2) = 0, "", " Koma " &
          SubSay(s2, True))
          End Function

          2)Original :
          ----------
          Function Terbilang(n As Long) As String

          Modified :
          ----------
          Function Terbilang(n) As String


          3)Original :
          ----------
          Private Function SubSay(ByVal n As Long, DirectConvert As Boolean) As
          String

          Modified :
          ----------
          Private Function SubSay(ByVal n, DirectConvert As Boolean) As String


          4)Original :
          ----------
          If DirectConvert Then
          If n < 10 Then
          s2 indoSayData(n) + " Nol"
          Else
          s Trim(Str(n))
          s2 indoSayData(Left(s, 1)) + " " + indoSayData(Mid(s, 2, 1))
          End If
          SubSay Trim(s2)
          Exit Function
          End If

          Modified :
          ----------
          If DirectConvert Then
          Dim X, LenPecahan As Byte
          LenPecahan = Len(n)
          For X = 1 To LenPecahan
          s2 = s2 + indoSayData(Val(Mid(n, X, 1))) + " "
          Next X
          SubSay = Trim(s2)
          Exit Function
          End If


          Tambahan function:
          -------------------
          Function BanyakPecahan(Nilai, Pecahan As Boolean) As String
          Dim LenNilai, I, J As Byte
          Dim VPecahan, VBilangan As String
          LenNilai = Len(Nilai)
          For I = 1 To LenNilai
          If Mid(Nilai, I, 1) = "." Then
          For J = I + 1 To LenNilai
          VPecahan = VPecahan + Mid(Nilai, J, 1)
          Next J
          I = J
          Else
          VBilangan = VBilangan + Mid(Nilai, I, 1)
          End If
          Next I
          If Pecahan Then
          BanyakPecahan = VPecahan
          Else
          BanyakPecahan = VBilangan
          End If
          End Function


          ______________________________ Reply Separator _________________________________
          Subject: [vb-indo] Re: Konversi dari Bilangan ke kalimat
          Author: sugioto@... at MIME
          Date: 1/3/2000 9:42 AM


          Happy New Year 2000

          Terima kasih semuanya telah membantu


          ----- Original Message -----
          From: Syarif Lumintarjo <syarifl@...>
          To: <vb-indo@egroups.com>
          Sent: Friday, December 31, 1999 8:14 AM
          Subject: [vb-indo] Re: Konversi dari Bilangan ke kalimat


          > -----Original Message-----
          > From: Sugioto <sugioto@...>
          > To: vb-indo@egroups.com <vb-indo@egroups.com>
          > Date: 30 Desember 1999 9:12
          > Subject: [vb-indo] Re: Konversi dari Bilangan ke kalimat
          >
          > >Coding yang anda berikan itu jalan
          > >cuma kalo saya masukin angka 1000 di bacanya satu ribu..............
          > >tapi bukan seribu
          >
          > Ha, ha, ha..., saya juga baru tahu, padahal udah lamaa banget saya pake
          > coding itu buat nyetak Kwitansi dan Faktur, baru ketahuan bugnya
          sekarang...
          > :)
          >
          > Terima kasih banyak nih bung Sugioto, sekarang saya perbaiki, trus saya
          > tambahin untuk bilangan pecahan, yaitu Function TerbilangPecah.
          >
          > NB: Karena ada perubahan yang agak banyak jadi yang coding yang kemaren
          > diganti aja semuanya.
          >
          > --
          > Syarif Lumintarjo
          > syarifl@..., syarifl@...
          > PGP: http://syarifl.homepage.com/pgp
          > ICQ: http://wwp.icq.com/17357739
          >
          > <--BEGIN CODE-->
          >
          > Function TerbilangPecah(n As Double) As String
          > Dim s$, s1$, s2$, n1 As Long, n2 As Long
          > s Trim(Str(Int(n * 100)))
          > s2 Right(s, 2): n2 Val(s2)
          > s1 Left(s, Len(s) - 2): n1 Val(s1)
          > TerbilangPecah Terbilang(n1) & " Koma " & SubSay(n2, True)
          > End Function
          >
          > Function Terbilang(n As Long) As String
          > Dim indoSayPower(3) As String
          > indoSayPower(1) "Ribu"
          > indoSayPower(2) "Juta"
          > indoSayPower(3) "Milyar"
          > Dim s$, s2$
          > s2 ""
          > s Right("000000000" & Trim(Str(n)), 9)
          > Dim n3, n2, n1, n0
          > n2 Mid(s, 1, 3)
          > n1 Mid(s, 4, 3)
          > n0 Mid(s, 7, 3)
          > s2 s2 + IIf(n2 <> 0, SubSay(n2, False) + " " + indoSayPower(2) + " ",
          > "")
          > If n1 <> 0 Then
          > s2 s2 + IIf(n1 1, "Seribu ", SubSay(n1, False) + " " +
          indoSayPower(1)
          > + " ")
          > End If
          > s2 s2 + IIf(n0 <> 0, SubSay(n0, False), "")
          > Terbilang Trim(s2)
          > End Function
          >
          > Private Function SubSay(ByVal n As Long, DirectConvert As Boolean) As
          String
          > Dim indoSayData(9) As String
          > indoSayData(0) "Nol"
          > indoSayData(1) "Satu"
          > indoSayData(2) "Dua"
          > indoSayData(3) "Tiga"
          > indoSayData(4) "Empat"
          > indoSayData(5) "Lima"
          > indoSayData(6) "Enam"
          > indoSayData(7) "Tujuh"
          > indoSayData(8) "Delapan"
          > indoSayData(9) "Sembilan"
          >
          > Dim s$, i%, s2$
          >
          > If DirectConvert Then
          > If n < 10 Then
          > s2 indoSayData(n) + " Nol"
          > Else
          > s Trim(Str(n))
          > s2 indoSayData(Left(s, 1)) + " " + indoSayData(Mid(s, 2, 1))
          > End If
          > SubSay Trim(s2)
          > Exit Function
          > End If
          >
          > s2 ""
          > s Right("000" & Trim(Str(n)), 3)
          >
          > Dim np(3) As Integer
          > For i 1 To 3
          > np(i) Mid(s, 3 - i + 1, 1)
          > Next i
          >
          > If np(2) 1 Then
          > If np(1) 0 Then
          > s2 "Sepuluh"
          > ElseIf np(1) 1 Then
          > s2 "Sebelas"
          > Else
          > s2 indoSayData(np(1)) & "belas " & s2
          > End If
          > Else
          > If np(1) <> 0 Then s2 indoSayData(np(1))
          > If np(2) <> 0 Then s2 indoSayData(np(2)) + " Puluh " + s2
          > End If
          >
          > If np(3) <> 0 Then
          > If np(3) 1 Then
          > s2 "Seratus " + s2
          > Else
          > s2 indoSayData(np(3)) + " Ratus " + s2
          > End If
          > End If
          >
          > SubSay Trim(s2)
          >
          > End Function
          >
          > <--END CODE-->
        • Syarif Lumintarjo
          ... From: Nasrullah@JKT-NECSEI1.ccgw.nec.co.jp To: vb-indo@egroups.com Date: 03 Januari 2000 12:23
          Message 4 of 15 , Jan 3, 2000
            -----Original Message-----
            From: Nasrullah@...
            <Nasrullah@...>
            To: vb-indo@egroups.com <vb-indo@egroups.com>
            Date: 03 Januari 2000 12:23
            Subject: [vb-indo] Re: Konversi dari Bilangan ke kalimat


            >Buat rekan-rekan Vb-Indo,
            >
            >Programnya mas syarif itu sudah bagus, hanya ada beberapa bugs
            >yang perlu
            >di perbaiki. ini saya sertakan perbaikan beberapa functionnya.
            >trus untuk
            >bisa lebih dari 2 desimal di belakan koma, saya sertakan sebuah
            >function
            >tambahan "Function BanyakPecahan(Nilai, Pecahan As Boolean) As
            >String"
            >Selamat mencoba and salut buat mas syarif. Program Anda
            >memberikan banyak
            >ide pada saya....Thanks..

            >- N4srul -

            Siiip! Bung N4srul memang oke!
            Semangkin sempurnalah coding terbilang kita...

            <!--DEL-->

            --
            Syarif Lumintarjo
            syarifl@..., syarifl@...
            PGP: http://syarifl.homepage.com/pgp
            ICQ: http://wwp.icq.com/17357739
          • Adi Indrawan Chan
            Sori nih, tapi di tempat saya kok ok2 aja tuh... saya coba coding berikut ini di VB6: Function TestPecah(n As Double) As String Dim s$ s = CStr(n) TestPecah =
            Message 5 of 15 , Jan 4, 2000
              Sori nih, tapi di tempat saya kok ok2 aja tuh... saya coba coding
              berikut ini di VB6:

              Function TestPecah(n As Double) As String
              Dim s$
              s = CStr(n)
              TestPecah = s
              End Function

              Private Sub Command1_Click()
              Dim i As Double
              i = 7.24
              Print TestPecah(i)
              End Sub

              Dan hasilnya tetep 7.24, tapi kalau saya ganti baris kedua dari
              Command1_Click dengan:
              i = 7.24!
              Emang hasilnya seperti yang Anda bilang... 7.239999...
              Jadi masalahnya sudah dari i-nya bukan dari function yang anda buat...

              Adi

              > Heran sekali saya... koq bisa gitu yaa, tapi abis itu saya coba
              > dengan function spt dibawah ini,
              >
              > Function TestPecah(n As Double) As String
              > Dim s$
              > s = Str(n)
              > TestPecah = s
              > End Function
              >
              > dan ternyata hasilnya jika saya input TestPecah(7.24) hasilnya
              > adalah 7.239999999. VB ini gimana sih??
              >
              > 7.22 -> 7.22
              > 7.23 -> 7.23
              > 7.24 -> 7.23999999999999
              > 7.25 -> 7.24999999999999
              > 7.26 -> 7.25999999999999
              > 7.27 -> 7.26999999999999
              > 7.28 -> 7.27999999999999
              >
              > so, 7,24 pasti akan dibaca Tujuh Koma Dua Tiga. Ini semacam
              > kecelakaan pembulatan... Bagaimana dg. netter yang lain, ada
              > saran?
              >
            • Syarif Lumintarjo
              ... From: Adi Indrawan Chan To: vb-indo@eGroups.com Date: 04 Januari 2000 16:55 Subject: [vb-indo] Re: Konversi dari
              Message 6 of 15 , Jan 4, 2000
                -----Original Message-----
                From: Adi Indrawan Chan <adiic@...>
                To: vb-indo@... <vb-indo@...>
                Date: 04 Januari 2000 16:55
                Subject: [vb-indo] Re: Konversi dari Bilangan ke kalimat


                >Sori nih, tapi di tempat saya kok ok2 aja tuh... saya coba
                coding
                >berikut ini di VB6:

                <!--DEL-->

                Sorry, saya kurang lengkap, kemaren saya nyobainnya di VBA-nya
                M$ Excel.
              Your message has been successfully submitted and would be delivered to recipients shortly.