NSNumberFormatter在Xamarin.iOS+;胫骨图表

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");

我试图将一个字符串解析为一个NSNumber,它的结尾有%字符,我可以在序列的ShinobiChart值属性中使用

给定以下代码,我正在创建NSNumberFormatter:

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)。任何地方都不应该有百分比。您肯定不想创建NSNumberFormatter

    A
    SChartDonutSeries
    (因此
    schartpiesteries
    )对象具有
    LabelFormatString
    属性。它接受一个字符串并用于格式化这些标签。它的语法与
    NSNumberFormatter
    中使用的语法相同。因此,要获得所需的行为,请在
    SChartDataSource
    子类中创建series对象后设置
    LabelFormatString

    var series = new SChartDonutSeries();
    series.LabelFormatString = "%0.2f%%";
    
    这将把数字格式化为2位小数,并在末尾加一个百分号。i、 e.
    25.462
    → <代码>25.46%。适当调整格式字符串以获得所需的格式。记住,要获得