oke, ik zit met iets vreemd vast...
ik heb een bankrekeningnummer die bestaat uit 3 delen, vb 123-1234567-89 waarbij 123 het nummer is van de bank, 1234567 het gebruikersnummer en 89 is de checksum (niet correct hier).
Nu moet die checksum berkend worden aan de hand van de eerste 10 getallen modulo 97.
probleempje: 9999999999 (maximum waarde van de eerste 10 getallen) is groter dan een integer, dus zet ik het in een long, maar dat pakt % niet blijkbaar...
ik krijg deze error:
moet ik ergens rekening mee houden of bestaat er een % die werkt met getallen groter dan 2147483647?
ik heb een bankrekeningnummer die bestaat uit 3 delen, vb 123-1234567-89 waarbij 123 het nummer is van de bank, 1234567 het gebruikersnummer en 89 is de checksum (niet correct hier).
Nu moet die checksum berkend worden aan de hand van de eerste 10 getallen modulo 97.
probleempje: 9999999999 (maximum waarde van de eerste 10 getallen) is groter dan een integer, dus zet ik het in een long, maar dat pakt % niet blijkbaar...
ik krijg deze error:
code:
1
2
3
4
5
6
7
8
| possible loss of precision
found : double
required: int
this.checkSum = (temp % 97);
^
1 error
Process completed. |
Java:
1
2
3
4
5
6
7
8
9
| public RekeningNummer(int bankDeel, int gebruikersDeel) { this.bankDeel = bankDeel; this.gebruikersDeel = gebruikersDeel; double temp = (double)bankDeel*10000000+gebruikersDeel; System.out.println(temp); // dit geeft wel het goede resultaat (de eerste 10 getallen), dit was negatief als temp een int is this.checkSum = (temp % 97); } |
code:
1
2
3
4
5
| bankdeel: 789 gebruikesdeel: 9871234 samen: 7899871234 checksum: -23 (wat dus fout is!) 789 - 9871234 - -23 |
moet ik ergens rekening mee houden of bestaat er een % die werkt met getallen groter dan 2147483647?