Ich habe ernsthafte Probleme während der Konvertierung. Die erste Lösung, die ich versuchte, ist der Code unten ::Konvertierung der Dateigröße in die entsprechende Form zeigt seltsame Ausgabe
NSByteCountFormatter *formatter = [[NSByteCountFormatter alloc] init];
formatter.allowsNonnumericFormatting = NO;
return [NSByteCountFormatter stringFromByteCount:valueFromAPI countStyle:NSByteCountFormatterCountStyleMemory];
Die zweite Lösung, die ich versuchte, der unter Code ::
double convertedValue = (double)valueFromAPI;
DebugLog(@"%f",convertedValue);
int multiplyFactor = 0;
NSArray *tokens = @[@"bytes",@"KB",@"MB",@"GB",@"TB",@"PB",@"EB",@"ZB",@"YB"];
while (convertedValue >= 1024) {
convertedValue /= 1024;
multiplyFactor++;
}
return [NSString stringWithFormat:@"%4.0f %@",convertedValue, tokens[multiplyFactor]];
Aber beide gibt den gleichen seltsamen Ausgang. Nach der Überprüfung auf viele Fälle habe ich festgestellt, dass es nur passiert, wenn die Dateigröße klein ist.
Das Bild zeigt deutlich, dass die zurückgegebenen Dateigrößen in negativ sind und in exobyte (EB), die eigentlich nur Bilder von UIImagePickerController
gepflückt. In der zweiten Lösung fand ich heraus, dass beim Konvertieren von long long
zu double 'es in das erweiterte Format konvertiert wird, was das Problem verursacht.
Ich weiß nicht, wie ich es lösen soll. Bitte hilf mir. Danke im Voraus.
Was ist der tatsächliche Wert? – trojanfoe
@trojanfoe Die Werte, die von der API kommen 1024.00, 15394.00, 482317.00, 36200.00 und sie sind in Form von NSString –