Cześć. Mam problem z kalkulatorem. Wszystko działa poprawnie prócz obliczania liczb rzeczywistych. Mianowicie program zwraca liczbe zmiennoprzecinkową lecz nie moge jej użyć do obliczeń. Przykład dla jasności:
6/4 odda mi normalnie 1,5
2.2 * 2 oddaje mi 0. Przy innych działaniach na zmiennych również występują dziwne liczby.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace kalkulator2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public char znak;
public string operacja1;
public string operacja2;
public double wynik = 0.0;
string dot = ".";
string ciag;
int liczmy;
private void Btn0_Click(object sender, EventArgs e)
{
BoxWynik.Text += 0.ToString();
}
private void Btn1_Click(object sender, EventArgs e)
{
BoxWynik.Text += 1.ToString();
}
private void Btn2_Click(object sender, EventArgs e)
{
BoxWynik.Text += 2.ToString();
}
private void Btn3_Click(object sender, EventArgs e)
{
BoxWynik.Text += 3.ToString();
}
private void Btn4_Click(object sender, EventArgs e)
{
BoxWynik.Text += 4.ToString();
}
private void Btn5_Click(object sender, EventArgs e)
{
BoxWynik.Text += 5.ToString();
}
private void Btn6_Click(object sender, EventArgs e)
{
BoxWynik.Text += 6.ToString();
}
private void Btn7_Click(object sender, EventArgs e)
{
BoxWynik.Text += 7.ToString();
}
private void Btn8_Click(object sender, EventArgs e)
{
BoxWynik.Text += 8.ToString();
}
private void Btn9_Click(object sender, EventArgs e)
{
BoxWynik.Text += 9.ToString();
}
// Dodaj
public void BtnPlus_Click(object sender, EventArgs e)
{
operacja1 = BoxWynik.Text;
znak = '+';
BoxWynik.Text = "";
}
//Minus
private void BtnMinus_Click(object sender, EventArgs e)
{
operacja1 = BoxWynik.Text;
znak = '-';
BoxWynik.Text = "";
}
//Razy
private void BtnRazy_Click(object sender, EventArgs e)
{
operacja1 = BoxWynik.Text;
znak = '*';
BoxWynik.Text = "";
}
//Dzielenie
private void BtnDzielenie_Click(object sender, EventArgs e)
{
operacja1 = BoxWynik.Text;
znak = '/';
BoxWynik.Text = "";
}
private void BtnDot_Click(object sender, EventArgs e)
{
ciag = BoxWynik.Text;
liczmy = ciag.IndexOf(dot);
LblTest.Text = liczmy.ToString();
if (liczmy == -1)
{
BoxWynik.Text += ".".ToString();
}
else
{
BoxWynik.Text += "".ToString();
}
}
private void BtnRowna_Click(object sender, EventArgs e)
{
operacja2 = BoxWynik.Text;
double zm1, zm2;
double.TryParse(operacja1, out zm1);
double.TryParse(operacja2, out zm2);
if (znak == '+')
{
wynik = zm1 + zm2;
BoxWynik.Text = wynik.ToString();
}
else if (znak == '-')
{
wynik = zm1 - zm2;
BoxWynik.Text = wynik.ToString();
}
else if (znak == '*')
{
wynik = zm1 * zm2;
BoxWynik.Text = wynik.ToString();
}
else if (znak == '/')
{
if (zm2 == 0)
{
BoxWynik.Text = "you fool bro".ToString();
}
else
{
wynik = zm1 / zm2;
BoxWynik.Text = wynik.ToString();
}
}
}
private void BtnCzysc_Click(object sender, EventArgs e)
{
BoxWynik.Text = "".ToString();
operacja1 = "".ToString();
operacja2 = "".ToString();
}
}
}
Byłbym wdzięczny za wskazówki odnośnie tego co powinienem dalej czynić by liczby rzeczywiste zaczęły działać poprawnie.