Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

[VB2010] Podstawianie "du?ych" liczb do TextBox'a



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Visual Studio: C#, VB, VC++, …
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
bogdan



Dołączył: 06 Wrz 2005
Posty: 172

PostWysłany: Pon Lip 27, 2020 12:59 pm  OP    Temat postu: [VB2010] Podstawianie "du?ych" liczb do TextBox'a Odpowiedz z cytatem Pisownia

Witam.
Przy podstawianiu "du?ych" liczb typu single (np. 123456789) do texBox'a liczby te s? podstawiane w postaci wyk?adniczej:
Kod:
Private Sub form_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
TextBox1.Text = CSng("123456789").ToString
End Sub


Wynik jaki otrzymujemy to: 1,234568E+08.
Jak mo?na zmieni? to zachowanie ?rodowiska, ?eby w polu tekstowym pojawia?a si? podstawiana warto?? bez formatowania?
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
samolot



Dołączył: 26 Sty 2006
Posty: 8376
Skąd: Toru?

PostWysłany: Pon Lip 27, 2020 10:50 pm      Temat postu: Odpowiedz z cytatem Pisownia

Kod:
   TextBox1.Text = FormatNumber(Liczba, -1)

Wynik jest taki:
Cytat:
123 456 800,00

przy czym parametr -1 jest i tak domy?lny i mo?e go nie by? wcale, wówczas liczba jest wy?wietlana z dwoma miejscami dziesi?tnymi. Je?li chcesz 3 miejsca to piszesz 3:
Kod:
TextBox1.Text = FormatNumber(Liczba, 3)
, i tak dalej...
_________________
Nie zadawaj bezcelowych pyta? / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
bogdan



Dołączył: 06 Wrz 2005
Posty: 172

PostWysłany: Wto Lip 28, 2020 6:47 am  OP    Temat postu: Odpowiedz z cytatem Pisownia

Niestety - to nie to.
Nie zauwa?y?e?, ?e nie jest to liczba o któr? chodzi?o (zosta?a zaokr?glona, wynik jest taki sam jak po u?yciu String.Format ("{0:F}",Liczba))
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
samolot



Dołączył: 26 Sty 2006
Posty: 8376
Skąd: Toru?

PostWysłany: Wto Lip 28, 2020 7:56 pm      Temat postu: Odpowiedz z cytatem Pisownia

Rzeczywi?cie nie zwróci?em uwagi, ale ja mia?em zmienn? Liczba zadeklarowan? jako Single, czego w poprzednim po?cie nie pokaza?em.
Zmieni?em t? deklaracj? na String. Pe?en kod Buttona jest teraz taki:
Kod:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim Liczba As String = 123456789
        TextBox1.Text = FormatNumber((Liczba), -1)

    End Sub
No i wynik teraz w polu tekstowym jest taki:
Cytat:
123 456 789,00

_________________
Nie zadawaj bezcelowych pyta? / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
bogdan



Dołączył: 06 Wrz 2005
Posty: 172

PostWysłany: Sro Lip 29, 2020 7:55 am  OP    Temat postu: Odpowiedz z cytatem Pisownia

Ale? w?a?nie o to chodzi w problemie, o którym dyskutujemy. Jak podstawi? liczb? (single, double) do pola tekstowego (np. w celu edycji) zachowuj?c jej prawid?ow? warto??.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
samolot



Dołączył: 26 Sty 2006
Posty: 8376
Skąd: Toru?

PostWysłany: Sro Lip 29, 2020 9:23 pm      Temat postu: Odpowiedz z cytatem Pisownia

Je?li liczb? chcesz edytowa? w polu tekstowym jako string, to wg mnie musisz j? mie? jako string tam?e - tak ja zrobi?em i mam po??dany przez ciebie efekt. A z pola tekstowego mo?esz pobra? ten string do zmiennej liczbowej pod warunkiem, ?e ten zapis jest zapisem liczby. ( IsNumeric() ). Ja tu nie widz? ?adnej sprzeczno?ci czy problemu.
Poza tym ka?da liczba, któr? wstawisz do w?a?ciwo?ci Text pola tekstowego staje si? tam tekstowym zapisem liczby a nie liczb? i w?a?nie dlatego mo?esz tam edytowa? jej zapis tekstowy.

_________________
Nie zadawaj bezcelowych pyta? / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
bogdan



Dołączył: 06 Wrz 2005
Posty: 172

PostWysłany: Pią Lip 31, 2020 7:57 am  OP    Temat postu: Odpowiedz z cytatem Pisownia

Z regu?y nie bior? udzia?u w polemikach. Tym razem zrobi? wyj?tek.
Cytat:
Je?li liczb? chcesz edytowa? w polu tekstowym jako string, to wg mnie musisz j? mie? jako string
Do tego w?a?nie s?u?y konwersja Single--->String i o tym jest ten w?tek.
Nie widzisz ?adnego problemu ... - no to popatrz dobrze.
Przyk?ad nr 1. Prosty kalkulator (dwa pola do wprowadzania liczb i trzecie do wy?wietlania wyniku) Jak wy?wietlisz wynik mno?enia (lub innego dzia?ania) dwóch (odpowiednio du?ych) liczb zmiennoprzecinkowych w postaci nie wyk?adniczej ?
Przyk?ad nr 2. Baza danych - odczyt przedmiotowej "du?ej" liczby, podstawienie jej do formularza w celu edycji (i tu przyda?oby si? j? skonwertowa? do pola tekstowego). Chyba nie proponujesz przechowywania liczb jako stringów w BD ?
Takich przyk?adów pewnie mo?na wymy?li? du?o wi?cej
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
samolot



Dołączył: 26 Sty 2006
Posty: 8376
Skąd: Toru?

PostWysłany: Pią Lip 31, 2020 4:18 pm      Temat postu: Odpowiedz z cytatem Pisownia

Cytat:
Jak wy?wietlisz wynik mno?enia (lub innego dzia?ania) dwóch (odpowiednio du?ych) liczb zmiennoprzecinkowych w postaci nie wyk?adniczej ?
Rzeczywi?cie jest to problem.
Pami?tam, ?e z tymi zaokr?gleniami zawsze by?y k?opoty. Zrobi?em teraz co? takiego:
Kod:
Dim Mnozna As Double = 1234.78 * 100
        Dim Mnoznik As Double = 9864.34 * 100
        Dim Iloczyn As Double = (Mnozna * Mnoznik) / 10000 '12180289,7452

        Dim Wynik1 As String = Math.Round(Iloczyn, 4)
        Dim Wynik2 As String = FormatNumber(Iloczyn, 4)
        Dim Wynik3 As String = Format(Iloczyn, "###########.0000")
        txtWynik.Text = Wynik2

Nie wiem czy to odpowiada twoim wymaganiom. To nie jest mój sposób, jak pami?tam dyskusje na ten temat tocz? si? chyba od "zawsze".

_________________
Nie zadawaj bezcelowych pyta? / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Visual Studio: C#, VB, VC++, … Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.21525 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |