Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno kovertovanie času(string) na € C#

Zdravím,

Vytváram v C# časomieru a uplynulý čas (minúty) násobím 5 centami, čiže 0,05€.
Problém je v tom , že chcem aby mi v label4 vypísalo nie 175 centov , ale 1,72 €.
kód mam následovný:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Threading;


namespace Casomiera
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent(); 
         }

        Stopwatch sw = new Stopwatch();
        Stopwatch sw1 = new Stopwatch();
        Stopwatch sw2 = new Stopwatch();
  
        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Start();
            sw.Start();
            button2.Enabled = false;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            timer1.Stop();
            button2.Enabled = true;
            button1.Enabled = false;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            sw.Reset();
            label1.Text = "00:00:00";
            button1.Enabled = true;
 
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            TimeSpan elapsed = sw.Elapsed;
            label1.Text = String.Format("{0:00}:{1:00}:{2:00}",
            Math.Floor(elapsed.TotalHours), elapsed.Minutes,
            elapsed.Seconds);

            label4.Text = String.Format("{1:00}",
            Math.Floor(elapsed.TotalHours), elapsed.Minutes*5); // násobenie uplynutého času

   
        }
}

skúšal som násobiť minútu 0,05 ale nefungovalo.
Ďakujem.

Předmět Autor Datum
Preco pouzivas Math ked potrebujes len celociselne operacie? Pozri si operator % (to je modulo v C++…
MM.. 08.07.2011 19:51
MM..
A to nasobenie casu treba robit samozrejme ako (60*hodina+minuta)*5 to je hodnota v centoch, tu poto…
MM.. 08.07.2011 19:53
MM..
P.S. neviem zhlavy jak sa sprava ta struktura TimeSpan, ak tam su minuty uvedene celkovo, tak nasobi…
MM.. 08.07.2011 20:06
MM..
Hodnotu si vypočítaš nasledovne: decimal value = (decimal)elapsed.TotalMinutes * .05m; Ak máš sprá… poslední
los 08.07.2011 20:12
los

P.S. neviem zhlavy jak sa sprava ta struktura TimeSpan, ak tam su minuty uvedene celkovo, tak nasobis len minuty * 5 centov. A potom ked chces robit s celymi cislami tak pouzijes / a %, ked chces robit s double tak pouzijes: eura=celkovo_centov/100 a eura zaokruhlis nadol na cele cislo, a potom centy = celkovo_centov - eura*100.

Hodnotu si vypočítaš nasledovne:

decimal value = (decimal)elapsed.TotalMinutes * .05m;

Ak máš správne nastavené Thread.CurrentCulture, tak stačí:

label4.Text = value.ToString("c");

Prípadne si vytvoríš konkrétne CultureInfo a zavoláš:

CultureInfo culture = CultureInfo.CreateSpecificCulture("sk-SK");
label4.Text = value.ToString("c", culture);

Ak chceš napevno určiť počet desatinných miest, oddeľovače, symbol meny a pod., tak si vytvoríš vlastné NumberFormatInfo:

NumberFormatInfo numberFormat = new NumberFormatInfo
{
	CurrencyDecimalDigits = 2,
	CurrencyDecimalSeparator = ",",
	CurrencyGroupSeparator = " ",
	CurrencyGroupSizes = new[] { 3 },
	CurrencyPositivePattern = 3,
	CurrencyNegativePattern = 8,
	CurrencySymbol = "€",
};
label4.Text = value.ToString("c", numberFormat);

Zpět do poradny Odpovědět na původní otázku Nahoru