tom*_*tom 2 double objective-c long-integer
我有一个双值1318611498349.3559,我想通过执行以下操作将其转换为long,但我得到的值为-4506682935000170496,这对我来说似乎不对.
double dv = ...;
long lv = (double)dv;
...
Run Code Online (Sandbox Code Playgroud)
我在哪里可以找到关于此的一些文档?
其他答案是正确的,因为double可以保存比任何整数类型大得多的值,但是如果double值在范围内,那么能够转换将是很好的.
编译器没有因为试图将双精度转换为long而导致攻击的原因是因为你实际上可以做到这一点.显然,计算机中的所有内容都存储为1和0的字符串,基本上你的代码所做的就是说取vIn并将这些位解释为长整数值.获取浮点值的位并将它们解释为整数类型很少有用,并且值不在double所代表的附近.
我其实是在尝试做相反的事情.我需要将长(实际上很长)转换为双倍.然后它击中了我,让NSNumber进行转换.使用所需的值创建临时NSNumber对象,然后使用该方法获取要返回的值的类型.
double vIn = 123.4321;
long vOut = [[NSNumber numberWithDouble:vIn] longValue];
Run Code Online (Sandbox Code Playgroud)
不能保证这会做你想要的.我猜测,如果double值大于long可以存储的值,它将返回最大值.
| 归档时间: |
|
| 查看次数: |
9515 次 |
| 最近记录: |