2402267538.
所以length是一个变量,其值类似1024
,需要除以")syntax error: invalid arithmetic operator (error token is "
。
执行此操作会抛出此错误
[KCSFileStore downloadData:@"myId" completionBlock:^(NSArray *downloadedResources, NSError *error) {
if (error == nil) {
KCSFile* file = downloadedResources[0];
NSData* fileData = file.data;
id outputObject = nil;
if ([file.mimeType hasPrefix:@"text"]) {
outputObject = [[NSString alloc] initWithData:fileData encoding:NSUTF8StringEncoding];
} else if ([file.mimeType hasPrefix:@"image"]) {
outputObject = [UIImage imageWithData:fileData];
}
NSLog(@"downloaded: %@", outputObject);
} else {
NSLog(@"Got an error: %@", error);
}
} progressBlock:nil];
答案 0 :(得分:0)
当你这样做时:
echo $(( length / 1024 )) | bc -l
由于bc -l
执行整数除法,您已经在$(( length / 1024 ))
之前的小数点后丢失了部分。
您可以像这样使用bc -l
:
length="2402267538"
answer=$(bc -l <<<"scale=2; $length / 1024")
echo "$answer"
2345964.39
使用awk
更加冗长:
answer=$(awk -v len=$length 'BEGIN{printf "%.2f\n", len/1024}')
echo "$answer"
2345964.39
或者这个:
answer=$(awk -v len=$length 'BEGIN{printf "%d\n", len/1024}')
echo "$answer"
2345964
答案 1 :(得分:0)
切换到ksh
会简化任务:
$ length=2402267538
$ answer=$((length/1024.00))
$ echo $answer
2345964.392578125
使用awk的一种方法:
$ answer=$(awk "BEGIN{printf(\"%f\n\",$length/1024);}")
$ echo $answer
2345964.392578
如果您只需要结果的整数部分(适用于bash
和ksh
):
$ answer=$((length/1024))
$ echo $answer
2345964
如果你的长度变量是浮点数,你可以这样修剪它:
$ length=2402267538.12
$ ilength=${length%%.*}
$ answer=$((ilength/1024))
$ echo $answer
2345964