It’s not what you think. That F* is for float.
I just completed the Currency Converter tutorial, the hello world of Cocoa programming, using XCode and Interface Builder. And found an unexpected behavior: 1,2 * 1,2 = 1,44__0000057220459__. What the…? Let’s trace this

// Here we get the amount of dollars from a NSTextField
// and pass it to the model
[converter setSourceCurrencyAmount:[dollarField floatValue]];
NSLog(@"dollarField: %f (%@)",
[dollarField floatValue], [dollarField stringValue]);
// Result:
// Currency Converter[8077:80f] dollarField: 1.200000 (1,2)
// Repeat with the exchange rate
[converter setRate:[rateField floatValue]];
NSLog(@"rateField: %f (%@)",
[rateField floatValue], [rateField stringValue]);
// Result:
// Currency Converter[8077:80f] rateField: 1.200000 (1,2)
// The convertCurrency method simply multiplies two floats
// and returns the result as a *gasp* float.
amount = [converter convertCurrency];
NSLog(@"amount: %f", amount);
// Result:
// Currency Converter[8077:80f] amount: 1.440000
// Here's to the crazy ones.
[amountField setFloatValue:amount];
NSLog(@"amountField: %f (%@)",
[amountField floatValue], [amountField stringValue]);
// Result:
// Currency Converter[8077:80f] amountField: 1.440000 (1,440000057220459)
Ah, the naive behaviour of programmers used to high level languages. I searched a bit and found people saying the solution was using double or a NSNumberFormatter. Replacing all the float values in the workflow with doubles it worked flawlessly and showed a perfectly formatted 1,44.

[amountField setDoubleValue:amount];
NSLog(@"amountField: %f (%@)",
[amountField doubleValue], [amountField stringValue]);
// Result:
// amountField: 1.440000 (1,44)
I tried to trade ingenuousness with ingeniousness with a simple workaround: it’s a text field, so let’s insert a formatted text. Only to find that I had made matters worse:
[amountField setStringValue:[NSString stringWithFormat:@"%f",amount]];
// Result:
// amountField: 1.000000 (1.440000)
Oh wait, in Spain we use the comma as the decimal separator instead of the period, let’s try with a localizedString:
[ amountField setStringValue:[NSString localizedStringWithFormat:@"%f", amount]];
// Result:
// amountField: 1.440000 (1,440000)
Jesus F* Christ! And the F* is not for float now.
I found a great float discussion in stackoverflow about this.
Anyway the rule of thumb seems to be “screw floats, use double, at least you have half the imprecission”. And it’s funny that though the tutorial uses float, the NSControl assumes it’s working with a double. Or something like that.