Форматирование десятичного xamarin - PullRequest
0 голосов
/ 08 июня 2018

Я новичок в c # и не могу найти способ отформатировать свои номера.Я хочу показать только 2 цифры после десятичной дроби.

namespace Dolar
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private void Button_Clicked(object sender, EventArgs e)
        {
            XmlDocument doc1 = new XmlDocument();
            doc1.Load("http://www.tcmb.gov.tr/kurlar/today.xml");
            XmlElement root = doc1.DocumentElement;
            XmlNodeList nodes = root.SelectNodes("Currency");

            foreach (XmlNode node in nodes)
            {
                var attributeKod = node.Attributes["Kod"].Value;
                if (attributeKod.Equals("USD"))
                {
                    var a = node.SelectNodes("BanknoteSelling")[0].InnerText;
                    var b = node.SelectNodes("BanknoteBuying")[0].InnerText;
                    float c = float.Parse(a);
                    float d = float.Parse(b);                 
                    label2.Text = a;
                    label3.Text = b;


                }

                var attributeKod1 = node.Attributes["Kod"].Value;
                if(attributeKod1.Equals("EUR"))
                {
                    var a = node.SelectNodes("BanknoteSelling")[0].InnerText;
                    var b = node.SelectNodes("BanknoteBuying")[0].InnerText;
                    float c = float.Parse(a);
                    float d = float.Parse(b);
                    label4.Text = a;
                    label5.Text = b;
                }
                }
            }
    }
}

выходы;

4.5173 //4.51
4.4992 //4.49
5.3131 //5.31
5.2919 //5.29

Ответы [ 3 ]

0 голосов
/ 08 июня 2018

Обратите внимание, что вы не назначаете проанализированные переменные float (c и d) для текстовых полей.Вы можете использовать спецификатор формата «0,00», например так:

var c = float.Parse(a);
var d = float.Parse(b);
label4.Text = c.ToString("0.00");
label5.Text = d.ToString("0.00");

Вы также смешали неявно типизированные var переменные и явно типизированные переменные (например, float c).Я бы предложил придерживаться var

0 голосов
/ 08 июня 2018

Я бы использовал встроенные форматы.

В вашем случае это i.ToString("F2") или даже i.ToString("F2", CultureInfo.InvariantCulture).

2 означает 2 десятичных знака, а Fозначает формат с фиксированной точкой.

См. источник: https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings#FFormatString

Однако вы должны проверить это, так как я не уверен, что это правильно для Xamarin.Это для .Net.

0 голосов
/ 08 июня 2018

вы можете отформатировать их так:

String.Format("{0:0.00}", 4.5173);    output will be  // "4.51"

или: с помощью класса Math:

float value = 4.5173;
value = System.Math.Round(value,2);
...