         }
     }
 
+    /* only show 1 decimal place of precision */
+    /* System_snprintf() does not support %2.1f */ 
+    loadInt = 100.0*(float)loadStat.threadTime/(float)loadStat.totalTime;
+    loadFrac = 1000.0*(float)loadStat.threadTime/(float)loadStat.totalTime - 10.0*loadInt;
+  
+    /* use System_snprintf() because it uses 500 fewer bytes of stack than snprintf() */ 
     System_snprintf(buf, sizeof(buf),
-          " task: %s/0x%x, pri: %d, stack usage: %d/%d, mode: %s load: %f",
+          " task: %s/0x%x, pri: %d, stack usage: %d/%d, mode: %s load: %d.%1u",
           name, task, taskStat.priority, taskStat.used, taskStat.stackSize, getModeStr(taskStat.mode),
-          100.0*(float)loadStat.threadTime/(float)loadStat.totalTime);
+          loadInt, loadFrac);
     Serial.println(buf);
 }
 

#include "Energia.h"

#include <xdc/std.h>


    UInt i;
    Memory_Stats memStat;
    Hwi_StackInfo hwiStackStat;
    Load_Stat loadStat;
    Task_Handle tsk;
    float idleLoad;
    uint32_t idleLoadInt, idleLoadFrac;

    /* collect current stats */
    Load_update();   

    /* use time NOT spent in idle task for Total CPU Load */ 
    Load_getTaskLoad(Task_getIdleTask(), &loadStat);
    idleLoad = 100.0 - 100.0*(float)loadStat.threadTime/(float)loadStat.totalTime;
    idleLoadInt = idleLoad;
    idleLoadFrac = 10.0*idleLoad - 10.0*idleLoadInt;
 
    Serial.write("Total CPU Load: ");
    Serial.print(idleLoadInt);
    Serial.print(".");
    Serial.println(idleLoadFrac);
    Serial.println("");
    
    /* collect stats on all statically Created tasks */
