2016-11-15 3 views
0

Я немного потерялся здесь, я пытаюсь создать форму, которая будет вычислять затраты, которые сотрудник может декларировать, используя карты google.Округление расчетной цены в javascript

Все работает нормально, но я не могу понять, как округлить до двух десятичных знаков. Я надеялся, что кто-то может дать мне несколько советов в правильном направлении

Вот мой код:

<html> 
<head> 
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> 
    <title>Distance Calculator</title> 
    <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCGt7NK298P8LYoxRumy7OHoL32xaQOWwQ&signed_in=true&libraries=places"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 
    <style type="text/css"> 
     #map_canvas { 
      height:500px; 
     } 
    </style> 

    <script type="text/javascript"> 
    var directionDisplay; 
    var directionsService = new google.maps.DirectionsService(); 
    var map; 

    function initialize() { 
     var start = document.getElementById("start"); 
     var end = document.getElementById("end"); 
     var autocompletePickpUp = new google.maps.places.Autocomplete(start); 
     var autocompleteDelivery = new google.maps.places.Autocomplete(end); 
     var uk = new google.maps.LatLng(52.216838, 4.433652); 
     var myOptions = { 
      zoom:12, 
      mapTypeId: google.maps.MapTypeId.ROADMAP, 
      center: uk 
     } 

     //testing 


     directionsDisplay = new google.maps.DirectionsRenderer(); 
     directionsDisplay.setMap(map); 
     map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
     autocompletePickpUp.bindTo('bounds', map); 
     autocompleteDelivery.bindTo('bounds', map); 

    } 

    function calcRoute() { 
     var startValue =start.value; 
     var endValue = end.value; 
     var distanceInput = document.getElementById("distanceKm"); 
     var price = document.getElementById("price"); 


     var request = { 
      origin:startValue, 
      destination:endValue, 
      travelMode:google.maps.DirectionsTravelMode.DRIVING 
     }; 

     directionsService.route(request, function(response, status) { 
      if (status == google.maps.DirectionsStatus.OK) { 
       directionsDisplay.setDirections(response); 
       distanceInput.value = response.routes[0].legs[0].distance.value/1000; 
       price.value = distanceInput.value * 0.19; 

      } 
     });   
    } 


    </script> 
</head> 
<body onload="initialize()"> 
    <div> 
     <p> 
      <label for="start">Vertrekpunt </label> 
      <input type="text" name="start" id="start" /> 

      <label for="end">Bestemming </label> 
      <input type="text" name="end" id="end" /> 

      <input type="submit" value="Bereken declaratie" onclick="calcRoute()" /> 
     </p> 
     <p> 
      <label for="distanceInKm">Afstand (km): </label> 
      <input type="text" name="distanceKm" id="distanceKm" readonly="true" /> 
     </p> 
     <p> 
      <label for="price">Te declareren </label> 
      <input type="text" name="price" id="price" readonly="true" /> 
     </p> 
    </div> 
    <div id="map_canvas"></div> 
</body> 
+0

Добро пожаловать в StackOverflow. Помогает ли это? http://stackoverflow.com/questions/15762768/javascript-math-round-to-two-decimal-places –

ответ

5

parseFloat("123.456").toFixed(2);

Вернется 123.46, если у вас уже есть поплавок можно удалить parseFloat()

Итак, в вашем примере:

function calcRoute() { 
    var startValue =start.value; 
    var endValue = end.value; 
    var distanceInput = document.getElementById("distanceKm"); 
    var price = document.getElementById("price"); 


    var request = { 
     origin:startValue, 
     destination:endValue, 
     travelMode:google.maps.DirectionsTravelMode.DRIVING 
    }; 

    directionsService.route(request, function(response, status) { 
     if (status == google.maps.DirectionsStatus.OK) { 
      directionsDisplay.setDirections(response); 
      distanceInput.value = response.routes[0].legs[0].distance.value/1000; 
      price.value = parseFloat(distanceInput.value * 0.19).toFixed(2); 

     } 
    });   
} 
+0

Спасибо Shaun! это было и мое первое предположение. Где бы я сказал, так как это не работает для меня. – bprb

+0

Ответ обновлен. –

+0

Он работает Shaun спасибо вам большое за ваше время и помощь, 1 немного редактирования: directionsService.route (запрос, функция (ответ, статус) { если (состояние == google.maps.DirectionsStatus.OK) { directionsDisplay .setDirections (response); distanceInput.value = response.routes [0] .legs [0] .distance.value/1000; price.value = distanceInput.value * 0.19; price.value = parseFloat (price.value) .toFixed (2); console.log (price.value); } }); } – bprb

0

toFixed() возвращает string.If вы хотите ряд, применить parsefloat снова на результат, как ниже

var a = "5.57849" ; a = parseFloat(parseFloat(a).toFixed(2)) ;

Смежные вопросы