Potrzebuję obcinać liczbę do 2 miejsc po przecinku, co w zasadzie oznacza odcinanie dodatkowych cyfr.Obcinanie liczby do określonych miejsc dziesiętnych
Np
2.919 -> 2.91
2.91111 -> 2.91
Dlaczego? Właśnie to robi serwer SQL, gdy zapisuje się określoną liczbę precyzji . Np. Jeśli kolumna jest dziesiętna (8,2), a Ty spróbujesz wpisać wstawić/zaktualizować liczbę 9.1234, 3 i 4 zostaną odcięte.
Potrzebuję zrobić dokładnie to samo w kodzie C#.
Jedyne możliwe sposoby, że mogę myśleć robi to albo:
Używanie stringformatter do „print” go tylko dwóch miejsc po przecinku, a następnie przekształcenie go do postaci dziesiętnej, np :
decimal tooManyDigits = 2.1345 decimal ShorterDigits = Convert.ToDecimal(tooManyDigits.ToString("0.##")); // ShorterDigits is now 2.13
nie jestem zadowolony z tego, ponieważ wiąże się to ciąg znaków, a potem inny napis na dziesiętny konwersji, który wydaje się nieco szalony.
Stosując Math.Truncate (który przyjmuje tylko liczbą całkowitą) tak, że można pomnożyć przez 100 obcina się, a następnie podzielenie przez 100. np:
decimal tooLongDecimal = 2.1235; tooLongDecimal = Math.Truncate(tooLongDecimal * 100)/100;
nie jestem również zadowolony to dlatego, że jeśli zbyt długoDługi jest 0, , otrzymam dzielenie przez błąd 0.
Z pewnością istnieje lepszy i łatwiejszy sposób! Jakieś sugestie?
'0/100' nie jest dzielenie przez 0 błędów. To jest '0', czego można się spodziewać. – xbonez
(0 * 100)/100 = 0 –
@sehe truncate! = Runda –