Bonjour à tous,
j'ai un soucis un peu particulier en ce sens où je n'ai pas trouvé de solutions à mes recherches.
Je dois calculer un prix d'une place de stationnement fonction d'une durée et du prix à l'heure de la palce de parking. Au résultat, j'ai ceci : "Please pay the parking fare:1.50000375". Ce que je souhaite faire c'est avoir 2 chiffres seulement après la virgules.
Là où est mon problème c'est que la méthode de calcul se fait via un setter/getter et des objets. Ci dessous mon code :
J'aimerais stocker le résulat de ticket.setPrice((duration * Fare.CAR_RATE_PER_HOUR)/(60*60*1000)); par exemple et utiliser une méthode type DecimalFormat pour que j'obtienne juste 2 chiffres après la décimale. Mais je ne vois pas comment faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 package com.parkit.parkingsystem.service;import java.text.DecimalFormat; import com.parkit.parkingsystem.constants.Fare; import com.parkit.parkingsystem.model.Ticket; public class FareCalculatorService { public void calculateFare(Ticket ticket) { long duration = calculateTicketParkTime(ticket.getOutTime().getTime(), ticket.getInTime().getTime()); switch (ticket.getParkingSpot().getParkingType()){ // Attribue un type de place de parking (voiture ou vélo) case CAR: { // Dans le cas d'une voiture qui se gare //Prend la durée de stationnement, multiplie par le prix du stationnement à l'heure (ici 1.5), //puis la durée en millisecondes est convertit en minutes pour avoir le bon résultat. ticket.setPrice((duration * Fare.CAR_RATE_PER_HOUR)/(60*60*1000)); break; } case BIKE: { // Dans le cas d'un vélo qui se gare ticket.setPrice((duration * Fare.BIKE_RATE_PER_HOUR)/(60*60*1000)); break; } default: throw new IllegalArgumentException("Unkown Parking Type"); } } public long calculateTicketParkTime(long outHour, long inHour) { // réadaptation du if de départ. if( (outHour == 0) || (outHour < inHour) ) { throw new IllegalArgumentException("Out time provided is incorrect:"+outHour); } long duration = outHour - inHour; return duration;
Je pourrais créer une méthode que je pourrai appeler dans mon switch mais là aussi je suis coincé..
Une idée ?
En vous remerciant
Partager