如何控制小数点后的位数?

时间:2014-01-27 06:23:39

标签: objective-c nsstring string-formatting

我尝试了@“%。3g”,但它没有正常工作,当我使用它时,第一个公式四舍五入到一个小数位,第二个&第三个公式看起来不错,第五个公式和第7个出现奇怪(1.52e + 03)& (9.23e + 03)。下面是我的公式。 我想分别做每一个,因为有些需要四舍五入到两个地方,一些到三个地方。 非常感谢。

double VolumePerMtrCubicMtr = ((3.141592654/4 * ([textField1.text doubleValue]/1000) * ([textField1.text doubleValue]/1000)) - (3.141592654/4 * ([textField2.text doubleValue]/1000) * ([textField2.text doubleValue]/1000))) * [textField5.text doubleValue];
volumePerMeterCubicMeterAnswer.text = [NSString stringWithFormat:@"%g", VolumePerMtrCubicMtr];

double VolumePerMtrLitres = [volumePerMeterCubicMeterAnswer.text doubleValue] * 1000;
volumePerMeterLitreAnswer.text = [NSString stringWithFormat:@"%g", VolumePerMtrLitres];

double LubricationPumpCapacity = [textField6.text doubleValue] / 1000 * [volumePerMeterLitreAnswer.text doubleValue];
pumpSpeedAnswer.text = [NSString stringWithFormat:@"%g", LubricationPumpCapacity];

double VolumePerPipeCubicMtr = [volumePerMeterCubicMeterAnswer.text doubleValue] *[textField3.text doubleValue];
volumePerPipeCubicMeterAnswer.text = [NSString stringWithFormat:@"%g", VolumePerPipeCubicMtr];

double VolumePerPipeLitre = [volumePerMeterLitreAnswer.text doubleValue] * [textField3.text doubleValue];
volumePerPipeLitreAnswer.text = [NSString stringWithFormat:@"%g", VolumePerPipeLitre];

double VolumeForDriveCubicMtr = [volumePerMeterCubicMeterAnswer.text doubleValue] * [textField4.text doubleValue];
volumeForDriveCubicMeterAnswer.text = [NSString stringWithFormat:@"%g", VolumeForDriveCubicMtr];

double VolumeForDriveLitres = [volumePerMeterLitreAnswer.text doubleValue] * [textField4.text doubleValue];
volumeForDriveLitreAnswer.text = [NSString stringWithFormat:@"%g", VolumeForDriveLitres];

3 个答案:

答案 0 :(得分:1)

我建议将NSNumberFormatterNSNumberFormatterDecimalStyle一起使用。

例如:

NSNumber *sampleNumber = [NSNumber numberWithDouble:1234567.8369];
NSString *numberStr = [NSNumberFormatter localizedStringFromNumber:sampleNumber numberStyle: NSNumberFormatterDecimalStyle];

numberStr将是:1,234,567.837

答案 1 :(得分:0)

尝试%.3f,其中3是小数位数而不是%g

答案 2 :(得分:0)

我知道为什么我现在得到的不准确,这是因为我的公式正在使用我的其他公式的答案进行计算,如果它们已经四舍五入,那么我会得到下一个公式的不准确! 不知道怎么解决这个问题。我真的需要保留小数点后面的所有数字,只隐藏显示的额外数字,这样它们仍然包含在计算中。 在java中,我会使用“split”来执行此操作,但不知道如何在Objective-C中执行此操作。