Błąd niespójności dostępności - jak to naprawić?

0

Błąd tak jak w temacie, podaje tutaj swój kod:

namespace cashcounter 
{

enum type {BRUTTO, NETTO};
	
	public class counter
	{
		public double kwota;
		public double VAT;
		public type typ;
		
		public counter(double kwota, double VAT, type typ)
		{
			this.kwota = kwota;
			this.VAT = VAT;
			this.typ = typ;
		}
   }
}

Co zrobić żeby ruszyło ?

1

Dać:

public enum type {BRUTTO, NETTO};
0
enum type {BRUTTO, NETTO};

na:

public enum type { BRUTTO, NETTO };
0

Dzięki, a ja wcześniej kombinowałem z prawami dostępności wewnątrz klasy :|

8

Oj, double dla operacji na cenach/walutach nigdy mi się nie podobało. Szczególnie przy przelicznikach ilości i innych kursach walut :)

0
fourfour napisał(a):

Oj, double dla operacji na cenach/walutach nigdy mi się nie podobało. Szczególnie przy przelicznikach ilości i innych kursach walut :)

Bo double ma mniejszą precyzję, do przechowywania cen i operacji na nich powinno używać się typu Decimal :)

0

Ok, zmieniłem na Decimal. Ale czy tutaj popełniłem tak duży błąd ? Przecież obydwa typy zajmują 8 bajtów.

5

Światowa gospodarka się na tym nie załamie, ale jeśli chodzi o pieniądze, to musimy używać typów dokładnych, a decimal właśnie taki jest. Jeszcze lepiej byłoby napisać klasę przechowującą walutę w intach (dwa pola: złotówki, grosze, albo jedno duże - jakiś big int - pole na grosze i odpowiednio oprogramowane wypisywanie zawartości, złotówki to wynik dzielenia przez 100, grosze to reszta z dzielenia przez 100). Do tej klasy napisać odpowiednie operatory (dodawanie, odejmowanie itd.).

Poza tym, nie w samych bajtach tkwi różnica, poczytaj http://msdn.microsoft.com/en-us/library/364x0z75.aspx

2

Dlaczego double nie jest dobry dla obliczeń walutowych:

double x = 0.1 + 0.1 + 0.1 - 0.3;
System.out.println("Dostalem = "+x);
System.out.println("Mialo byc = "+0.0);

// Dostalem = 5.551115123125783E-17
// Mialo byc = 0.0

Edit: No i się wkopałem - myślałem że to Java

1 użytkowników online, w tym zalogowanych: 0, gości: 1