Hmm Mam problem z zaokrągleniami po stronie klienta, które są następnie sprawdzane w backendach i sprawdzanie poprawności nie działa z powodu tego problemu. Oto poprzednie pytanie Javascript and C# rounding hellMnożenie daje przybliżone wyniki
Więc co robię jest:
po stronie klienta:
I have 2 numbers: 50 and 2.3659
I multiply them: 50 * 2.3659 //118.29499999999999
Round to 2 decimal places: kendo.toString(50 * 2.3659, 'n2') //118.29
W backend (C#
):
I am doing the same: 50 and 2.3659
I multiply them: 50 * 2.3659 //118.2950
Round to 2 decimal places: Math.Round(50 * 2.3659, 2) //118.30
I walidacja się nie udaje. Czy mogę coś zrobić po stronie klienta?
Masz świadomość, że [zmienna matematyka "jest zepsuta"] (https://stackoverflow.com/questions/588004/is-floating-point-math-broken), prawda? – deceze
Dobrze, ale pytanie, co mogę zrobić w tym przypadku? Czy sugerujesz mi odrzucanie walidacji biznesowych i zgłaszanie nieprawidłowych wyników? –
Pomnóż je jako liczby całkowite, a nie jako spacje. '50 * 23659' - następnie przenieś przecinek dziesiętny, jak uważasz. Wtedy uzyskasz wszędzie takie same wyniki. To nie jest idealne, ale zadziała. – Mjh