проблемы с отображением значения с плавающей запятой с двумя десятичными знаками после запятой в UILabel iOS - PullRequest
0 голосов
/ 11 мая 2018

Я остановился на одной проблеме, она может быть небольшой, но я не получаю.

Мое значение с плавающей точкой 39.9959946 .

floatValue = 39.9959946

Я хочу показать 39.99 в UILabel, в этом мне поможет проблема с получением.

lblValue.text=[NSString stringWithFormat:@"%0.2f",floatValue];

Получение результата 40.00.но я хочу 39.99.

Ответы [ 5 ]

0 голосов
/ 27 февраля 2019

Хорошо, у меня была такая же проблема, и я создал это решение. Это Swift 4.1

func convertToDecimal(input: Float) -> String {
        let numberFormatter:NumberFormatter = NumberFormatter()
        numberFormatter.roundingMode = .down
        numberFormatter.numberStyle = .decimal
        numberFormatter.maximumFractionDigits = 2
        numberFormatter.minimumFractionDigits = 2
        let numberString:String = numberFormatter.string(from: NSNumber(value: input))!
        return numberString
    }

он возвращает String, так что вы можете поместить его в UILabel.text.

0 голосов
/ 11 мая 2018

Попробуйте это:

float myFloat= 2345.678990;
NSNumberFormatter *format = [[NSNumberFormatter alloc]init];
[format setNumberStyle:NSNumberFormatterDecimalStyle]; 
[format setRoundingMode:NSNumberFormatterRoundDown];
[format setMaximumFractionDigits:2];
[format setMinimumFractionDigits:2];

NSString * string = [NSString stringWithFormat:@"%@",[format stringFromNumber:[NSNumber numberWithFloat:myFloat]]];
NSLog(@"After change Float Value:%@",string);

Выход: 2345.67

0 голосов
/ 11 мая 2018

Пожалуйста, попробуйте это, это будет работать для меня.

Цель c

float input = 39.9959946;
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setRoundingMode: NSNumberFormatterRoundDown];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:2];

NSString *numberString = [numberFormatter stringFromNumber:[NSNumber numberWithFloat:input]];

NSLog(@"NumberString: %@", numberString);

Swift

let input:Float = 39.9959946;
let numberFormatter:NumberFormatter = NumberFormatter()
numberFormatter.roundingMode = .down
numberFormatter.numberStyle = .decimal
numberFormatter.maximumFractionDigits = 2
let numberString:String = numberFormatter.string(from: NSNumber(value: input))!
print(numberString)

Вы можете получить идеальный результат в Objectiv-C и Swift /

0 голосов
/ 11 мая 2018

Попробуйте:

double val = 39.9959946;
NSNumberFormatter *numFormattor = [NSNumberFormatter new];
[numFormattor setRoundingMode:NSNumberFormatterRoundFloor];
[numFormattor setMaximumFractionDigits:2];
NSLog(@"Number: %@", [numFormattor stringFromNumber:@(val)]);

Номер: 39,99

0 голосов
/ 11 мая 2018
 NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    formatter.maximumFractionDigits = 7;
    NSLog(@"Hello :%@", [formatter stringFromNumber:[NSNumber numberWithFloat:39.9959946]]);

вот главный ролевой игрок.

formatter.maximumFractionDigits = 7;

в вашем случае это будет 3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...