 |
Coders' city Nasza pasja to programowanie!
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
bogdan
Dołączył: 06 Wrz 2005 Posty: 172
|
Wysłany: Pon Lip 27, 2020 12:59 pm OP Temat postu: [VB2010] Podstawianie "du?ych" liczb do TextBox'a |
|
|
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 |
|
 |
|
samolot
Dołączył: 26 Sty 2006 Posty: 8376 Skąd: Toru?
|
Wysłany: Pon Lip 27, 2020 10:50 pm Temat postu: |
|
|
Kod: |  TextBox1.Text = FormatNumber(Liczba, -1)
|
Wynik jest taki:
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 |
|
 |
bogdan
Dołączył: 06 Wrz 2005 Posty: 172
|
Wysłany: Wto Lip 28, 2020 6:47 am OP Temat postu: |
|
|
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 |
|
 |
samolot
Dołączył: 26 Sty 2006 Posty: 8376 Skąd: Toru?
|
Wysłany: Wto Lip 28, 2020 7:56 pm Temat postu: |
|
|
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: _________________ Nie zadawaj bezcelowych pyta? / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie |
|
Powrót do góry |
|
 |
bogdan
Dołączył: 06 Wrz 2005 Posty: 172
|
Wysłany: Sro Lip 29, 2020 7:55 am OP Temat postu: |
|
|
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 |
|
 |
samolot
Dołączył: 26 Sty 2006 Posty: 8376 Skąd: Toru?
|
Wysłany: Sro Lip 29, 2020 9:23 pm Temat postu: |
|
|
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 |
|
 |
bogdan
Dołączył: 06 Wrz 2005 Posty: 172
|
Wysłany: Pią Lip 31, 2020 7:57 am OP Temat postu: |
|
|
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 |
|
 |
samolot
Dołączył: 26 Sty 2006 Posty: 8376 Skąd: Toru?
|
Wysłany: Pią Lip 31, 2020 4:18 pm Temat postu: |
|
|
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 |
|
 |
|
|
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
|