[Résolu]NSNumberFormatter et "ScientificStyle"

MickMick Membre
avril 2010 modifié dans API AppKit #1
Bonjour à  tous,

J'ai un petit soucis avec les NSNumberFormatter. Naà¯vement, j'ai cru que le NSNumberFormatter gérait nativement l'écriture scientifique, du style 5,22E2 => 522 "NSNumberFormatterScientificStyle". Apparemment ce n'est pas le cas...

Quelqu'un aurait-il une expérience à  ce sujet, et aurait-il une stratégie pour gérer cela ?
Faut-il que je réinvente la poudre ? (Ecrire des classes pour gérer les nombre et leurs exposants...)

Réponses

  • CéroceCéroce Membre, Modérateur
    20:12 modifié #2
    Que veux-tu faire exactement ?
    Afficher le nombre en écriture scientifique,
    ou convertir une chaà®ne écrite en écriture scientifique vers une chaà®ne au format naturel ?
  • MickMick Membre
    20:12 modifié #3
    Bonjour,

    Je cherche à  afficher les nombres en écriture scientifique dans une table. (la dataSource fourni des NSNumber)
    De même, je voudrais que l'utilisateur puisse utiliser la notation 3E4 pour entrer la valeur 30000...

    En espérant que ces fonctionnalités soient "natives"...
  • CéroceCéroce Membre, Modérateur
    20:12 modifié #4
    Je n'ai pas le temps de monter un projet pour voir si ça fonctionne pour une NSTableCell, mais je viens de tester et la notation scientifique fonctionne bien pour une NSTextFieldCell.

    Tu as bien fixé le NSNumberFormatter de la NSTableCell en utilisant la méthode -[NSCell setFormatter:] ?
  • MickMick Membre
    20:12 modifié #5
    Bonjour,

    J'ai écrit la chose suivante:
    <br />&nbsp; &nbsp; &nbsp; &nbsp; NSTableColumn *uneColonne=[[NSTableColumn alloc] initWithIdentifier:[uneVariable objectForKey:@&quot;ID&quot;]];<br />	NSNumberFormatter *leFormateur=[[NSNumberFormatter alloc] init];<br />	[leFormateur setLocalizesFormat:YES];<br />	[leFormateur setNumberStyle:NSNumberFormatterScientificStyle];<br />	[[uneColonne dataCell] setFormatter:leFormateur];<br />
    

    Pas moyen... Il y a un truc que je ne pige pas.
  • MickMick Membre
    20:12 modifié #6
    Bonjour,

    N'y a-t-il personne pour m'aider...  :'(
    Je rappelle mon soucis, qui doit être un truc très nul que je n'ai pas vu : je prépare un NSNumberFormatter avec un NSNumberFormatterScientificStyle, que j'attribue à  la colonne via :
    <br />[[laColonne dataCell] setFormatter:leFormateur];<br />
    


    Peut-être me plante-je quelque part ?

    Le but : faire en sorte que lorsque l'utilisateur tape 3E4, le NSNumber qui sera stocké dans mes données soit 30000, et réciproquement pour l'affichage.

    Help....
  • mpergandmpergand Membre
    20:12 modifié #7
    <br />NSNumberFormatter* f=[textField formatter];<br />[f setFormatterBehavior:NSNumberFormatterBehavior10_4];<br />[f setNumberStyle:NSNumberFormatterScientificStyle];<br />[f setFormat:@&quot;0E0&quot;];<br />	<br />[textField setDoubleValue:3E4]; // affiche 3E4<br />
    


    si pour setFormat, je fais @00.00E00
    ça affiche: 30,00E03
  • MickMick Membre
    20:12 modifié #8
    Merci beaucoup !!
    Je n'avais pas donné au Formatter le NSNumberFormatterBehavior10_4... Pourquoi n'est-il pas ainsi par défaut ?...
  • AliGatorAliGator Membre, Modérateur
    20:12 modifié #9
    dans 1270114214:

    Merci beaucoup !!
    Je n'avais pas donné au Formatter le NSNumberFormatterBehavior10_4... Pourquoi n'est-il pas ainsi par défaut ?...
    Parce que ça.
Connectez-vous ou Inscrivez-vous pour répondre.