Cocoa: printf()-problem igen...

Tråden skapades och har fått 3 svar. Det senaste inlägget skrevs .
1

Jag håller på att räta ut det här frågetecknet kring NSStringWithFormat. Kort och gott det kommando med vilket man skall kunna skapa strängar med format och argument.

Frågan har jag tagit upp i en tidigare tråd, och då var frågan om vilka argument man kunde använda när man ville skapa formaterade NSStrings.

Jag har av och till exprimenterat med de argument som tas upp där, men jag har ännu inte lyckats med följande enkla problem:

Jag vill skapa en textsträng ungefär såhär:

NSString *tempString = [[NSString alloc] initWithFormat: @"%d %@", valutaMangd, valutaNamn];

[valutaFalt setStringValue:tempString];

Det jag vill försöka åstadkomma är alltså en NSString som innehåller ett numeriskt värde och en string. Det är det numeriska värdet som verkar falera, för argumentet

%d

verkar funkar utan problem om jag skickar en integer, men jag har slitit mitt hår för att få den att skriva ut float eller double. Det känns som om jag testat med vartenda argument som man printf tar upp utan att lyckas med utskriften.

Det jag alltså undrar över är vilket argument man skall använda för att få en NSString att skriva ut en float eller double!

Please help!

/Jont Olof

[ 10 Juni 2002, 18:17: Meddelandet ändrat av: Jont Olof ]

Problemet är delvis löst. Med argumentet %g visar strängen ett decimaltal med minsta möjliga antal decimaler och med arg %f visas argumentet med ett fast antal decimalsiffror. Om inga flaggor ges till %f så visas 6 decimalsiffror. Detta är förståss rätt opraktiskt och inte så använbart alla gånger.
I manualen till printf() står att man flaggar %f med -ddd.ddd där antalet d efter "." står för antalet decimalsiffror.

Min nya fråga blir alltså:

Om man har ett anrop av typen

[[NSString alloc] initWithFormat: @"%@ %f", strängen, floaten];

hur anger man då flaggor för %f i ovanstående funktionsanrop?

/Jont Olof

  • Medlem
  • International user
  • 2002-06-10 20:05

Testa det här:
[[NSString alloc] initWithFormat: @"%@ %0.2f", strängen, floaten];

Mycket riktigt kent! Det funkade utmärkt! Åter tusen tack!!

1
Bevaka tråden