简体   繁体   English

具有浮点值的NSNumberFormatter和SpellOutStyle

[英]NSNumberFormatter and SpellOutStyle with Float Values

I am trying to render a float value using NSNumberFormatter's SpellOutStyle, but the results are unsatisfactory, and I haven't been able to find a solution so far. 我正在尝试使用NSNumberFormatter的SpellOutStyle呈现一个float值,但是结果并不令人满意,到目前为止,我还没有找到解决方案。 The issue is, when given a float value such as 3.2, NSNumberFormatterSpellOutStyle renders it as something like this: "three point two zero zero zero zero zero zero four seven six eight three seven two". 问题是,当给定浮点值(例如3.2)时,NSNumberFormatterSpellOutStyle会将其呈现为以下形式:“三点二零零零零零零零四七六八三七二”。

When using the SpellOutStyle, setting the roundingMode or maximumFractionDigits properties don't seem to have any effect. 使用SpellOutStyle时,设置roundingMode或maximumFractionDigits属性似乎没有任何效果。

Here is a sample of how I am running the code: 这是我如何运行代码的示例:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterSpellOutStyle];
NSNumber *numberValue = [NSNumber numberWithFloat:3.2];

NSLog(@"Number: %@", [numberFormatter stringFromNumber:numberValue]);
// Outputs three point two zero zero zero zero zero zero ...

[numberFormatter release];

Any ideas? 有任何想法吗?

The problem is that floats are imprecise. 问题是浮子不精确。 Try changing line 3 to: 尝试将第3行更改为:

NSNumber *numberValue = [NSNumber numberWithDouble:3.2];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM