Diskuze: ASP.NET Core - vstup, pre zadanie ceny
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 12 zpráv z 12.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Nie som si celkom istý čo za problém s tým môžeš mať. Nebude to desatinnou čiarkou? S bodkou to (aspoň mne) funguje správne
Tá desatina čiarka tam neni, to len Chrom mi to upravuje aby to tak
vyzeralo. Napozadi tam je 3.5 , skúšal sem to v Edge, IE, Chrom. Všade to
vyhadzuje to iste. No ani ja nechápem kde je problém , lebo očividne by tam byt
nemnel.
Skús upraviť kultúru tak, aby bola všade rovnaká. V súbore web.config budeš chcieť mať niečo takéto:
<configuration>
<system.web>
<globalization culture="en" uiCulture="en" />
Rovnaký jazyk chceš mať uvedený aj v HTML. Môžeš si ho potom upraviť na aký chceš, základom je, aby sa nestávalo, že napr. na frontende neprejde validáciou čiarka a na serveri neprejde bodka.
Dík, pomohlo to. Ja nato dosel pred minutu tes , lebo mam db a tam sa mi ten
float zapisuje z ",", takze problem byl asi vtem ze VS pomen chcelo cislo z
carku a ten input zase z "." . MOhel by si mi este poradit ze jak donutim svoju
db papat cisla z bodku?
Lebo teraz mi to pada natem.
Ak to budeš posielať do DB ako float a používaš nejaké zmysluplné ORM tak si myslím, že by to predsa malo fungovať aj tak… Ak nie, tak jednoducho použi
Price.ToString().Replace('.', ',');
SQL ... Teraz sem to kukal cez debug v konzoly a jo je to tak ze mam ten float 3.5 a ked sa uložý do tabulky tak tam je 3,5 . Problem je ze ked potom nacitam Index z tabulku dat, tak pri tahani dat z tabulky mi to vyhodi InvalidCastException: Unable to cast object of type 'System.Double' to type 'System.Single'.. VS mi stejnak nedovoli ani v kode zapisat float f = 3,5f; . Skusim kuknut net co najdem, každopádne dik zapomoc
Nepomohlo by?
public double Price { get; set; }
a píše sa keď už tak float f = 3.5f; (vždy s bodkou)
Káááámo ty si fak BOH!!! Jo to bylo ono
Boze...je tam napsane
[Price] FLOAT (53) NOT NULL , nechapem proc to chce double este ked to
tam vkladam ve float. To je jedno, fak dik moc....(potlesk)
Osobně radši používám na cenu datový typ decimal...
https://docs.microsoft.com/…transact-sql?…
https://docs.microsoft.com/…umeric-types
Ak sa pozrieš na presnosť floatu v SQL a dátových typov pre desatinné čísla v C# (a tým pádom aj na ich veľkosť), tak zistíš, že C# float ti pre dáta z tvojej databázy nemusí stačiť. Preto ti tá konverzia padala, potreboval si aspoň double (a je dobrý zvyk pri práci s financiami používať skôr decimal, ako písal Michal).
Videl si to aj v tej chybovej hláške:
InvalidCastException: Unable to cast object of type 'System.Double' to
type 'System.Single'
Píše sa tam, že zlyhala konverzia (resp. cast, aby sme boli presní) z typu
double na single (System.Single == float). Vieš, že problém s dátami
nastáva v smere DB > aplikácia. Tu už ale potrebuješ vedieť rozdiel
medzi single / float a double, ktorý je v ich kapacite, a ktorá bola v tvojom
prípade na správnu konverziu nepostačujúca.
Ja tej chybovej hláške úplne nerozumel, len to že je problém konverziu.
Hlavne tomu že z db mi ide double, pritom v designeru je to ukázane jak float.
Ešte sem sa stým nestretol. To stu čiarku v db to byla test blbost už sem si
to dohledal. To len VS mňa to nútilo tak zapisovať lebo mam win v
slovenčine. Dost mňa to zmiatlo a po 6h za PC sem sa nato strašne namotal
Prepíšem to teda na
decimal jestli je to best practice, abych si nato navikel. Osobne neco taketo
robym prvy krat takze mam steho dost gulas. Ale diki zapomoc
Zobrazeno 12 zpráv z 12.