Ondalık bir '96 .154 'verildiğinde, her zaman 96.16'ya yuvarlandığından nasıl emin olabilirim (96.15 veren 2 ondalık normal yuvarlama yerine).Ondalık nasıl yuvarlanır?
cevap
hacky Kind ama bunu yapmak için çok sezgisel yol:
var val = 96.154M;
var result = Math.Ceiling(val * 100)/100.0M;
Dediğiniz gibi en ideali değil ama en iyi çözüm olan –
Ben senin Math.Ceiling
yöntemle arayan düşünüyorum.
Bunu yapmak için kaç ondalık basamak belirtmek için bunu bir çarpanla birleştirebilirsiniz. Bunun gibi,
public float roundUp(float number, int numDecimalPlaces)
{
double multiplier = Math.Pow(10, numDecimalPlaces))
return Math.ceiling(number*multiplier)/multiplier;
}
Sen sonucunda tura kadar değere 0,005 ekleyebilir ve.
dehası gibi görünüyor, ancak her zaman sıfırdan uzaklaşmak istediğinize, negatiflere ne dersiniz? – Jodrell
@Jodrell Sorunun başlığı her şeyin "her zaman" olduğunu söylüyor. Bu arada, negatif sayılar hakkındaki yorumları destekledim. –
Bu değer "96.150" olduğunda işe yaramaz, çünkü "96.16" değerine yuvarlanır, bu yanlıştır, çünkü 96.15 "ifadesi gerekir. – Steven
Bir değer ve temel kesir için bir roundUp yönteminin kodu. Sorunuz için kullanmanız gereken temel bölüm 0.05M'dir. Bununla birlikte, yöntem, baz fraksiyonu 0.5M olan diğer yaygın senaryolar için kullanılabilir; Ve bunu örneğin 0.3M'lik bir temel fraksiyon kullanarak ilginç şekillerde uygulayabilirsiniz. Eh ben eğlenceli, bu sorulara cevap vermelidir umut var:
İştestatic decimal roundUp(decimal aValue, decimal aBaseFraction)
{
decimal quotient = aValue/aBaseFraction;
decimal roundedQuotient = Math.Round(quotient, 0);
decimal roundAdjust = 0.0M;
if (quotient > roundedQuotient)
{
roundAdjust = aBaseFraction;
}
return roundAdjust + roundedQuotient * aBaseFraction;
}
bir RoundUp yönteminin benim sürümüdür, bu can spesifik ondalık
void Main()
{
Console.WriteLine(RoundUp(2.8448M, 2));
//RoundUp(2.8448M, 2).Dump();
}
public static decimal RoundUp(decimal numero, int numDecimales)
{
decimal valorbase = Convert.ToDecimal(Math.Pow(10, numDecimales));
decimal resultado = Decimal.Round(numero * 1.00000000M, numDecimales + 1, MidpointRounding.AwayFromZero) * valorbase;
decimal valorResiduo = 10M * (resultado - Decimal.Truncate(resultado));
if (valorResiduo < 5)
{
return Decimal.Round(numero * 1.00M, numDecimales, MidpointRounding.AwayFromZero);
}
else
{
var ajuste = Convert.ToDecimal(Math.Pow(10, -(numDecimales + 1)));
numero += ajuste;
return Decimal.Round(numero * 1.00000000M, numDecimales, MidpointRounding.AwayFromZero);
}
}
- 1. Ondalık değer en yakın 0.05 değerine nasıl yuvarlanır?
- 2. R'de tam sayıya nasıl yuvarlanır?
- 3. UITableView'da yalnızca köşeler nasıl yuvarlanır?
- 4. SQL Server'da sayılar düzgün bir şekilde nasıl yuvarlanır?
- 5. Çözünürlüğü ayarlamak için ondalık float ondalık basamakları
- 6. CSS klips yolu kullanırken köşeler nasıl yuvarlanır
- 7. LISP - ondalık basamaktan sonraki basamaklar
- 8. Mysqli'de ondalık sayıları tutma
- 9. Ondalık değer nasıl görüntülenir, ancak ondalık değeri nasıl kaldırılır
- 10. Ondalık sembolü nasıl alınır?
- 11. Ondalık nasıl biçimlendiririm?
- 12. Ondalık ve ondalık arasındaki fark
- 13. Yuvarlak 2 ondalık yüzer sayı jquery
- 14. log4j. Her saat yuvarlanır, günlük zip
- 15. Python: 100.0 yerine 123'den 100'e nasıl yuvarlanır?
- 16. Düzenleme formunda yuvarlatılmış ondalık Symfony2 + Doctrine2
- 17. Sürüm Numaraları yüzer, ondalık veya çift
- 18. Python'da ondalık dönüşümü nasıl yapılır?
- 19. Ondalık virgül yerine ondalık virgül kullanarak değişken
- 20. Ondalık ondalık sayıları eşit olarak bölme
- 21. Nesneyi ondalık mı atacaksınız? (Null ondalık)
- 22. Write.table() çıktısında ondalık basamak sayısı nasıl kontrol edilir?
- 23. bir Ondalık
- 24. 3 ondalık basamaklı HTML.EditorFor
- 25. MySQL Görünüm ondalık basamak
- 26. doğrulanıyor javascript ondalık sayılar
- 27. haskell negatif ondalık sayılar
- 28. C# IEEE754 ondalık
- 29. Biçim iki ondalık basamak
- 30. Ruby/Rails Ondalık yüzdelik
96.16 kadar 96,154 yuvarlak ve aşağı yuvarlamak değil nasıl 96.15? Yuvarlamanın nasıl çalışması gerektiğinin ayrıntılarını belirtmek iyi olur. –
Bu bağlantıya göz atın http://stackoverflow.com/questions/11740989/rounding-decimal-value/11741129#11741129 – sabz23
Bu gerçek ondalıklı mı yoksa çift mi? – ken2k