Ciao, per limitare a 0 (zero) puoi impostare una condizione che, a grandi linee, fa questo:
- se "value" meno il valore da sottrarre è maggiore o uguale a 0:  if(value-valore_da_sottrarre>=0) allora esegui l'operazione;
- altrimenti imposta a zero il "value" (o semplicemente non eseguire alcuna operazione).
Un altra soluzione puoi trovarla con l'uso di Math.max (che io  preferisco) a cui passi i due valori, cioè 0 (il valore limite) e il  "value" decrementato. Tale funzione prenderà il valore massimo tra i  due. Quindi restituirà 0 se "value-valore_da_sottrarre" è inferiore a  zero.
Per quanto riguarda i numeri con decimali, non esiste parseDouble in javascript (per ragioni tecniche).
Ciò che vuoi ottenere tu, puoi farlo con toFixed
Ad ogni modo puoi risolvere in varie maniere.
Giusto per provare ho messo giù qualche riga che fa quanto hai chiesto  (se non di più). Posto un esempio funzionante da cui puoi prendere  spunto:
	codice:
	<!DOCTYPE HTML>
<html>
  <head>
    <title>Esempio</title>
    <meta charset="utf-8">
    <script type="text/javascript">
      function addVal(e,o){
        // Aggiunge il valore numerico indicato, eseguendo una somma algebrica, al value dell'elemento specificato.
        // Restituisce l'elemento DOM o null.
        //
        //  e: elemento DOM o stringa che ne rappresenta il nome ID
        //  o {
        //    add: valore da sommare
        //    min: limite minimo
        //    max: limite massimo
        //  }
        //
        var el = (el = typeof e == "string" ? document.getElementById(e)  : e) && "value" in el ? el : null; // verifico che "el" sia un  elemento DOM valido e abbia una proprietà "value", altrimenti  restituisco null
        if(el&&o) el.value =  Math.max(isNaN(+o.min)?-Infinity:+o.min,  Math.min(isNaN(+o.max)?Infinity:+o.max,+(el.value)+(+o.add||0)));
        return el;
      };
      function fixDec(e){
        // Formatta il value dell'elemento specificato, impostandolo a 2 decimali fissi.
        // Restituisce l'elemento DOM o null.
        //
        //  e: elemento DOM o stringa che ne rappresenta il nome ID
        //
        var el = (el = typeof e == "string" ? document.getElementById(e) : e) && "value" in el ? el : null;
        if(el) el.value = (+el.value).toFixed(2);
        return el;
      }
      function incrementa() {
        fixDec(addVal("amount1",{add:1}));
        fixDec(addVal("amount1tot",{add:14}));
        fixDec(addVal("totale",{add:14}));
      }
      function decrementa() {
        fixDec(addVal("amount1",{add:-1,min:0}));
        fixDec(addVal("amount1tot",{add:-14,min:0}));
        fixDec(addVal("totale",{add:-14,min:0}));
      }
    </script>
  </head>
  <body>
    <input type=number id="amount1" value=0 onchange="fixDec(this)">
    <input type=number id="amount1tot" value=0 onchange="fixDec(this)">
    <input type=number id="totale" value=0 min=0 onchange="fixDec(this)">
    <hr>
    <input type="button" value="-" onclick="decrementa()">
    <input type="button" value="+" onclick="incrementa()">
  </body>
</html>
 
Ho chiaramente rielaborato il tuo script di partenza per ottimizzare il tutto.
Il codice è molto stringato, spero si riesca a capire qualcosa, ho  giusto inserito qualche commento ma nel caso ti serva qualche  delucidazione chiedi pure.