NSNumberFormatter在Xamarin.iOS+;胫骨图表
我试图将一个字符串解析为一个NSNumber,它的结尾有%字符,我可以在序列的ShinobiChart值属性中使用 给定以下代码,我正在创建NSNumberFormatter:NSNumberFormatter在Xamarin.iOS+;胫骨图表,ios,xamarin.ios,xamarin,shinobi,Ios,Xamarin.ios,Xamarin,Shinobi,我试图将一个字符串解析为一个NSNumber,它的结尾有%字符,我可以在序列的ShinobiChart值属性中使用 给定以下代码,我正在创建NSNumberFormatter: var formatter = new NSNumberFormatter (); formatter.NumberStyle = NSNumberFormatterStyle.Percent; var locale = new NSLocale ("en_US");
var formatter = new NSNumberFormatter ();
formatter.NumberStyle = NSNumberFormatterStyle.Percent;
var locale = new NSLocale ("en_US");
formatter.Locale = locale;
现在,我将尝试使用格式化程序获取图表切片标签的值:
var value = formatter.NumberFromString (answer.RepliesShare.ToString () + "%");
这将给我0.33的值。。。关键是,如果我从字符串中删除“%”,那么该值将为null
因此,我需要得到一个NSNumber,其值为(即)30%(换句话说,numberString+“%”)
我怎样才能得到它
更清楚地说,我正在努力实现这一点:
因为ShinobiChart的值是NSNumber类型,而我的RepliesShare是一个小数,所以我尝试将我的小数从33.00转换为33%。ShinobiChart不需要字符串,否则我会处理它。我发现NSNumber可以用NSNUMBERFORMATED进行格式化,所以我想我可以使用它,因为图表需要一个数字。
NSNUMBERFORMATER
s做两件事(其中包括):
NSString
转换为NSNumber
(@“25.4%”→ @“0.254”)NSNumber
转换为格式化的NSString
(@“0.254”→ @“25.4%”)NSNumber
对象,并将其转换为%age格式的字符串:
var formatter = new NSNumberFormatter();
formatter.NumberStyle = NSNumberFormatterStyle.Percent;
formatter.Locale = NSLocale.CurrentLocale;
var value = formatter.stringFromNumber(new NSNumber(0.254));
这将导致value
成为表示25.4%
的NSString
如果answer
对象上的RepliesShare
属性是NSNumber
,则可以执行以下操作以获取所需字符串:
var value = formatter.stringFromNumber(answers.RepliesShare);
希望有帮助
注意:这里我使用的是
NSLocale.CurrentLocale
,而不是new NSLocale(“en_US”)
。这将确保生成的字符串是适合当前用户设备的格式化程序。这将对百分比产生的最明显的影响是,在一些欧洲国家,逗号,
被用作小数分隔符,而不是句点NSNumberFormatter
可以做两件事(除其他外):
将格式化的数值NSString
转换为NSNumber
(@“25.4%”→ @“0.254”)
将NSNumber
转换为格式化的NSString
(@“0.254”→ @“25.4%”)
从你的问题上看不太清楚,但我认为你在尝试这两种选择中的后一种,但你在使用第一种方法
以下内容将获取一个NSNumber
对象,并将其转换为%age格式的字符串:
var formatter = new NSNumberFormatter();
formatter.NumberStyle = NSNumberFormatterStyle.Percent;
formatter.Locale = NSLocale.CurrentLocale;
var value = formatter.stringFromNumber(new NSNumber(0.254));
这将导致value
成为表示25.4%
的NSString
如果answer
对象上的RepliesShare
属性是NSNumber
,则可以执行以下操作以获取所需字符串:
var value = formatter.stringFromNumber(answers.RepliesShare);
希望有帮助
注意:这里我使用的是NSLocale.CurrentLocale
,而不是new NSLocale(“en_US”)
。这将确保生成的字符串是适合当前用户设备的格式化程序。这将对百分比产生的最明显的影响是,在一些欧洲国家,逗号,
被用作小数分隔符,而不是句点
我想你误解了NSNumberFormatter
的作用。它与NSNumber
对象没有任何关系
NSNumberFormatter
是一个用于处理碰巧包含数值的字符串的对象。它不适用于使用NSNumber
因为ShinobiChart的值是NSNumber类型,我的RepliesShare是一个小数点,所以我正在尝试将我的小数点从33.00转换为33%
您不想转换任何内容,只需将33.00
作为十进制类型输入ShinobiChart即可。我想Xamarin会自动将你的C#十进制转换成一个NSNumber
如果不起作用,试着给ShinobiChart提供新的NSNumber(33.00)
。任何地方都不应该有百分比。您肯定不想创建NSNumberFormatter我认为您误解了NSNumberFormatter
的功能。它与NSNumber
对象没有任何关系
NSNumberFormatter
是一个用于处理碰巧包含数值的字符串的对象。它不适用于使用NSNumber
因为ShinobiChart的值是NSNumber类型,我的RepliesShare是一个小数点,所以我正在尝试将我的小数点从33.00转换为33%
您不想转换任何内容,只需将33.00
作为十进制类型输入ShinobiChart即可。我想Xamarin会自动将你的C#十进制转换成一个NSNumber
如果不起作用,试着给ShinobiChart提供新的NSNumber(33.00)。任何地方都不应该有百分比。您肯定不想创建NSNumberFormatterA
SChartDonutSeries
(因此schartpiesteries
)对象具有LabelFormatString
属性。它接受一个字符串并用于格式化这些标签。它的语法与NSNumberFormatter
中使用的语法相同。因此,要获得所需的行为,请在SChartDataSource
子类中创建series对象后设置LabelFormatString
:
var series = new SChartDonutSeries();
series.LabelFormatString = "%0.2f%%";
这将把数字格式化为2位小数,并在末尾加一个百分号。i、 e.25.462
→ <代码>25.46%。适当调整格式字符串以获得所需的格式。记住,要获得