Auf die dämliche, unsinnige, ineffiziente, RAM-fressende String Klasse komplett verzichten. Wenn es denn unbedingt sein muss, verstehe wenigstens was du da eigentlich machst und wieso es die reserve() Funktion gibt:
Die String Klasse ist schlecht programmiert und hat kein "allocate ahead" wie bessere Implementierungen. Das heißt für jedes "+" (und wenn es nur ein char ist) wird realloc() aufgerufen und der Puffer vergrößert. Auf die Klasse sollte man einfach verzichten. Es gibt eigentlich kaum einen Grund dafür. Du meinst vielleicht, dass du etwas gewinnst wenn du den String für Serial und SD wiederverwendest, aber abgesehen von weniger Codezeilen ist das nicht der Fall.
Der SD Karte ist es vollkommen egal ob das alles in einem String steht, oder ob du oft hintereinander print() aufrufst. Der Code wird dadurch unschöner je nachdem wie man es programmiert, aber es ist wesentlich schneller und Speicher-schonender.
Um das etwas schöner und übersichtlicher zu machen gibt es die Streaming Lib,
http://arduiniana.org/libraries/streaming/
Damit hat man hat man C++ ähnliche Output Streams. Dabei wird lediglich der << Operator mit inline-Funktionen überladen, aber der Code der compiliert ist genau der gleiche. Wesentlich besser als diese unsäglichen print() Reihen die man sonst hat. Das sollte mit allem funktionieren, das von der Print Klasse ableitet ist. Also auch der SD Lib. Wirklich ausprobiert habe ich es damit nicht, aber es kompiliert.
Die Float Formatierung geht damit genauso wenn man _FLOAT davor schreibt:
float f = 1.233659;
Serial << _FLOAT(f, 4) << ";" << _FLOAT(f, 2) << endl;
Wobei das fast so aussiehst als ob du in dToStr() dtostrf() machst (wegen den zwei Paramtern). Da ist die String Klasse genauso überflüssig. Du kannst da einfach statt einem String einen char* auf den Puffer zurückgeben solange dieser global oder lokal static deklariert ist (aber nicht wenn er nur lokal nicht-static ist!).
Alternativ geht auch die SdFat Lib. Die hat noch umfangreichere Stream Funktionen. Ist aber nicht unbedingt nötig wenn es mit obiger Lib geht.