..所以只有3位数字“。”..
float a = 0.9876543
我想在内存中只有0.987,因为通过蓝牙传输号码。
我正在使用iphone SDK ..
谢谢你...... :)
答案 0 :(得分:6)
单个精度浮点数会占用相同数量的存储空间,无论您存储的是“简单”数字(如1.0)还是“复杂”数字(如1.23456789)。 (同样,对于双精度浮子 - 它们的尺寸彼此相同,但显然它们比单精度浮子占用更多的存储空间。)
任何网络协议/传输这样的蓝牙都会产生开销,只是让事情变得有效,例如标题等。这些开销意味着你想要节省的存储空间可能只是不值得打扰 - 你'再谈谈削减通信的几个字节,这可能比你潜在的保存还要好几倍。
更现实的优化可能是收集一些读数,然后一次性传输所有读数,例如32立刻。这使你的“真实信息”与“协议开销”的比率更高。
以下是您应该了解的有关优化的一些建议:
http://c2.com/cgi/wiki?PrematureOptimization
不要太早优化!
答案 1 :(得分:1)
你有三个答案:
苹果方式:float a = 0.9876543;
NSNumber *number = [NSNumber numberWithFloat: a];
NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setMaximumFractionDigits:3];
NSLog(@"%@", [formatter stringFromNumber: number]);
[formatter release], formatter = nil;
书呆子C的方式:
float a = 0.9876543;
a = roundf(a*1000)*.001f; // or floatf() if you want truncate and not round number
苹果技巧:
float a = 0.9876543;
NSString* tmp = [NSString stringWithFormat:@"%.3f",a];
a = [tmp floatValue];
祝你好运
答案 2 :(得分:0)
您是否正在尝试打印该号码?无论如何,我不确定这是不是你想要的:
float a = 0.9876543;
NSNumber *number = [NSNumber numberWithFloat: a];
NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setMaximumFractionDigits:3];
NSLog(@"%@", [formatter stringFromNumber: number]);