

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.
Preco pouzivas Math ked potrebujes len celociselne operacie?
Pozri si operator % (to je modulo v C++). To je to co potrebujes (zvysok po deleni)
http://msdn.microsoft.com/de-de/library/0w4e0fzs%2 8v=vs.80%29.aspx
Potom urobis celociselne delenie 100 (celociselne delenie je operator /, nepouzivaj realne cisla a teda asi ani Math nepotrebujes) a modulo 100 (to su potom centy).
A to nasobenie casu treba robit samozrejme ako (60*hodina+minuta)*5 to je hodnota v centoch, tu potom vydelis 100 (=eura) a modulo 100 (=centy). Neviem ci tam chces aj sekundy montovat do toho vypoctu ak ano tak daj vediet.
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:
Ak máš správne nastavené Thread.CurrentCulture, tak stačí:
Prípadne si vytvoríš konkrétne CultureInfo a zavoláš:
Ak chceš napevno určiť počet desatinných miest, oddeľovače, symbol meny a pod., tak si vytvoríš vlastné NumberFormatInfo: