在目标C中将double转换为long long

guogangj

我的代码很简单:

long long GetAmountFromString(NSString* string){
    NSLog(@"double value %f", [string doubleValue]);
    NSLog(@"double value * 100 %f", [string doubleValue]*100);
    NSLog(@"long long %lld", (long long)([string doubleValue]*100));
    return (long long)([string doubleValue]*100);
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        GetAmountFromString(@"4324.69");
    }
    return 0;
}

但是,它的输出很奇怪:

double value 4324.690000
double value * 100 432469.000000
long long 432468

我期望的是342469。谁能告诉我完成这项工作的正确方法?

dy

通常,十进制值不能用浮点类型精确表示。因此,双精度值* 100实际上小于432469。将其四舍五入即可得到您期望的结果。

double round(double number)
{
    return number < 0.0 ? ceil(number - 0.5) : floor(number + 0.5);
}

NSLog(@"long long %lld", (long long)(round([string doubleValue]*100)));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C ++中将long转换为CString

来自分类Dev

在C ++中将long long转换为Hex和Binary

来自分类Dev

在C ++中将long long转换为Hex和Binary

来自分类Dev

在C ++中将字符串转换为unsigned long long

来自分类Dev

为什么(C ++)从long long unsigned int转换为long double然后返回0

来自分类Dev

为什么(c ++)从long long unsigned int转换为long double然后返回0

来自分类Dev

long long转换为unsigned long的问题

来自分类Dev

在C ++中将字节数组转换为unsigned long

来自分类Dev

在C ++中将Java long转换为int64

来自分类Dev

C ++便携式将long转换为double

来自分类Dev

在Swift中将CLLocationSpeed转换为long

来自分类Dev

在Java中将long转换为int

来自分类Dev

如何将unsigned long long转换为double

来自分类Dev

如何在C语言中将long long转换为数组?

来自分类Dev

将地图[Long,Set [Long])转换为地图[Long,Long]

来自分类Dev

从char转换为long

来自分类Dev

从char转换为long

来自分类Dev

从unsigned long long转换为unsigned int

来自分类Dev

将double转换为long时发生转换错误

来自分类Dev

C ++将int转换为* LONG

来自分类Dev

在C ++中混淆为“ double to long long”

来自分类Dev

confuse in "double to long long" in c++

来自分类Dev

C ++ Precision使用long long和double

来自分类Dev

为什么在InvalidCastException中将SqlDataReader的int转换为long结果?

来自分类Dev

如何在Java中将ByteBuffer转换为long []

来自分类Dev

在Java中将当前日期时间转换为long

来自分类Dev

在Talend中将字符串转换为Long

来自分类Dev

在Kafka Connect中将long转换为int64

来自分类Dev

如何在JavaScript中将long转换为int?