我的应用程序有一个选择器,其后缀为lbs。我想添加对用户的支持,以便能够使用kgs。 所以我尝试使用它:
NSNumber *weightInPounds = [pickerArray objectAtIndex:row];
NSNumber *weightInKilos = [[DDUnitConverter massUnitConverter] convertNumber: weightInPounds fromUnit: DDMassUnitUSPounds toUnit: DDMassUnitKilograms];
float roundedValue = round(2.0f * [weightInKilos floatValue]) / 2.0f;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:1];
[formatter setRoundingMode: NSNumberFormatterRoundDown];
NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:roundedValue]];
label.text = numberString;
[formatter release];
使用该代码,它会舍入到最接近的.5或.0。问题是增量不一致。喜欢它不是1,1.5,2,2.5,3等。它更像是1,2,3.5,4.5,5等。我想这是因为当lbs被转换为kgs时,就是它的来源出。但我不认为用户会希望显示这样的数字。看起来他们想要正常的增量为0.5公斤。有谁知道我怎么解决这个问题?
答案 0 :(得分:3)
您似乎将所有计算基于选择器的行。如果你想这样做,那么lbs的拾取器行1与kg的拾取器行1的重量相同,那么你将别无选择,只能像这样。更好的解决方案是使车轮在没有标签的情况下从0到300。将标签放在其他地方(可能是它旁边的第二个拾取轮或某处的开关)。然后你可以得到重量和单位价值的值,并做正确的事。
更好的是,您可以确定用户的区域设置并自动为它们设置单位。