【发布时间】:2012-01-13 22:21:10
【问题描述】:
我有一个类似于这个问题的问题:How to obtain an unformatted string representation of an NSDecimal or NSDecimalNumber? 我需要一个字符串格式的数字,准确地表示为 NSNumber,但是这个数字在其他地方被转换回字符串,我可以'不要避免这种情况。我遇到的问题是,当数字转换回字符串时,字符串在某些情况下是科学计数法。
NSDecimalNumber *dn = [NSDecimalNumber decimalNumberWithString:@"0.0001"];
NSString *s = [dn stringValue]; // s will be @"1E-4"
如何防止这个数字以科学计数法显示?
我正在使用大约 2005 年的 GNUstep 版本(可能是 GNUstep Base 的 v1.11.1),而不是在 mac 或 iPhone 上工作,这可能是我提到的其他问题与行为差异的原因。我查看了base library API 和我自己的 GNUstep 安装中的文档,但似乎找不到任何帮助。
编辑 2/7/12:
问题略有变化,但目标仍然相同。最初,我认为我无法控制字符串输出片段,但我可以将值作为字符串传回。此时我正在尝试使用格式化字符串,但我仍然想防止出现科学记数法。
[NSString stringWithFormat:@"%1.14g", [val doubleValue]]
我选择使用%g 是因为我们希望该值具有特定数量的有效数字。如果我使用%f,我可以修剪多余的零,但数字并不总是干净利落。例如,800000000.79 显示为 800000000.7899999600。
有没有办法获得一个格式清晰的数字,该数字最多包含一定数量的有效数字(或小数位)而不在该数字之前显示科学记数法?
我也愿意接受 C 的建议。
【问题讨论】:
标签: objective-c c gnustep nsdecimalnumber