2013-02-17 87 views
1

我想计算一个长整型值除以整数给我什么,我希望是一个双,虽然我得到的结果是0.我使用的代码.. 。Objective-C双重长计算

double daysByYear = daysSinceBirthdayToService/365; 
NSLog(@"%d", daysByYear); 

在此代码,daysSinceBirthdayToService变量是一个长双可以使用以下代码来NSLogged (long)daysSinceBirthdayToService

它在头文件declaired作为

@property (nonatomic) NSInteger daysSinceBirthdayToService; 
一个属性

有人可以帮我解决这个问题,谢谢!

+1

对于格式“double”,您必须使用'%f',而不是'%d'。 – rmaddy 2013-02-17 22:22:08

回答

3

问题是/两个多头之间会做一个整体划分。

要强制进行浮点除法,至少需要将其中一个操作数转换为double。

例如

double daysByYear = daysSinceBirthdayToService/(double)365; 

,或者如果你有一个文字使之成为双加小数点

double daysByYear = daysSinceBirthdayToService/365.0; 
0
double daysByYear = daysSinceBirthdayToService/365.0; 
-1

可以这么认为,%d输出十进制数不是双?

+0

'%d'代表'int'值。 '%f'应该用于'double'。 – rmaddy 2013-02-17 22:21:25

+0

NSLog(@“%d”,daysByYear);输出双转换为整数,所以有什么问题? – insanebits 2013-02-17 22:23:30

+2

格式说明符无法完成转换。会发生什么是%d指定符会说“我需要一个'int'”。所以它会查看参数占用的内存(在本例中为double),并将这些字节解释为int的字节。由于内存实际上不是'int',因此产生的输出可能是垃圾。 – rmaddy 2013-02-17 22:27:22