Decimal'de yuvarlama sorunu (nokta ve virgül kültür farkından kaynaklanan)

Merhaba,

Bir MVC Core projesi geliştirmeye çalışıyorum. Elimde harici bir API’den çektiğim bRatio.LastPrice isimli string bir değerim var. Ben bu değerin tipini değiştirip lastp isimli decimal bir değişkene atayarak üzerinde bazı matematiksel işlemler yapmak istiyorum.

decimal lastp = Convert.ToDecimal(bRatio.LastPrice); veya
decimal lastp = decimal.Parse(bRatio.LastPrice); şeklinde kullandığımda lastp değeri sayfada 1.000.000 ile çarpılmış olarak görünüyor.

Sonucu 1.000.000 ile bölüp onu gösteriyim dediğimde ise virgülden sonra iki basamaklı şekilde yuvarlayarak gösteriyor.

Bu problem aslında sayı gösterimlerinde nokta ve virgül kullanımlarında bulunan kültür farklılığından kaynaklandığı için Convert.ToDecimal(bRatio.LastPrice.Replace('.',',')) veya
Convert.ToDecimal(bRatio.LastPrice, System.Globalization.CultureInfo.InvariantCulture)şeklinde denediğimde yine virgülden sonra iki haneli yuvarlıyor.

Eğer Convert.ToDecimal(bRatio.LastPrice, System.Globalization.CultureInfo.InvariantCulture).ToString("0.########") gibi stringe çevirerek kullanırsam istediğim formatta elde edebiliyorum fakat stringe çevirmeden bunu yapabilmem gerekiyor, çünkü matematiksel işleme tâbî tutacağım.

Yardımcı olacak herkese şimdiden teşekkür ederim.

Merhaba,

Harici API’den cektigin bRatio.LastPrice isimli string degerinin icerigi nedir?
Cevirdiginde elde ettigin lastp’nin degeri nedir?
Sadece bir sayfada (hangi sayfa? Kodu nerede?) yanlis gozuktugunu biliyoruz, yeterli degil.

Decimal veri tipi kendiliginden +/- 2^89’a yaklasan sayilarda iki haneye yuvarlaniyor. Milyonlar civarinda yuvarlaniyorsa koddan kaynaklidir.

Vakit ayırdığınız için çok teşekkür ederim. Sayfada göstermeden önce değeri stringe çevirerek hallettim şimdilik. Fakat decimal bir değeri view’de direkt göstermek istediğimde virgülden sonra iki haneye yuvarlamasına hâlâ bir anlam veremiyorum. Bu işlemleri bir döngünün içinde yaptığım için bRatio.LastPrice değeri her seferinde değişiyor fakat hepsi 0 ile 1 arasında sayılar. Yani string olarak "0.019376500" gibi ifadeler.