2010-07-21 23 views
12

I accept NSString nhưChuyển đổi NSString sẽ tăng gấp đôi cho các tính toán và sau đó trở lại một lần nữa để in trong NSString

NSString *value = [valuelist objectAtIndex:valuerow]; 
NSString *value2 = [valuelist2 objectAtIndex:valuerow2]; 

từ UIPickerView. Tôi muốn

double *cal = value + (value2 * 8) + 3; 


NSString *message =[[NSString alloc] initWithFormat:@"%@",cal]; 

tôi sẽ có thể để có được những chuỗi trong thông điệp sau khi tôi làm các tính toán về nó .. Xin vui lòng giúp chương trình của tôi đang đâm

Trả lời

35
double cal = [value doubleValue] + ([value2 doubleValue] * 8) + 3; 
NSString *message =[[NSString alloc] initWithFormat:@"%f",cal]; 
+0

Thankyou Guys! Nó đã làm việc ! –

+1

Bây giờ chỉ là hoàn toàn chủ quan –

+0

Tôi nhìn xung quanh và cho đến nay% f và% g có vẻ giống hệt nhau theo hầu hết các tham chiếu. Họ khác nhau như thế nào? – jamone

1
 
double cal = [value doubleValue] + ([value2 doubleValue] * 8) + 3; 
NSString *message =[[NSString alloc] initWithFormat:@"%g",cal]; 

// do work with message 

[message release]; 
2

Bạn shouldn' t chuyển đổi giữa đôi và dây tất cả các thời gian, vì nó có xu hướng mất độ chính xác (nói chung, bạn phải là rất cẩn thận nếu bạn không muốn mất độ chính xác).

Ví dụ: nextafter(1.0,2.0) trả về số lớn nhất nhỏ hơn 1 (chính xác là 1.0000000000000002220446049250313080847263336181640625, nhưng chúng tôi rất hài lòng với 1.0000000000000002). Định dạng bằng "% g" chỉ trả về "1".

Chúng tôi muốn NSNumber làm điều đúng, nhưng [[NSNumber numberWithDouble:nextafter(1,2)] stringValue] cũng trả về "1". Theo tài liệu, -[NSNumber stringValue] gọi [self descriptionWithLocale:nil] định dạng tài liệu bằng "% 0.16g". Như thế là không đủ. Tuy nhiên, chúng tôi nhận được câu trả lời đúng bằng cách định dạng với "% .17g". Tôi nghĩ rằng "% .17g" là đủ cung cấp rằng đôi là IEEE 754 64-bit tăng gấp đôi và các thư viện đang hoạt động đúng, nhưng không có bảo đảm.

Vào cuối ngày, không đảm bảo rằng [[NSString stringWithFormat:@"%.17g",n] doubleValue] == n.

+0

Cảm ơn vì điều đó nhưng tôi chỉ cần tối đa 2 vị trí thập phân .. tức là: 12.50 –

1

Đăng một câu trả lời mới kể từ khi chấp nhận người duy nhất không string => kép:

double cal = [value doubleValue] + ([value2 doubleValue] * 8) + 3; 
NSString *message =[[NSString alloc] initWithFormat:@"%f",cal]; 

Để đi đôi => chuỗi, sử dụng

double cost = [string doubleValue]; 
+0

lý do tại sao con trỏ? Nó phải là gấp đôi chi phí = [string doubleValue]; –

+0

điểm tốt. ở cấp độ meta ... tại sao nhận xét? chỉ cần chỉnh sửa bài đăng? : D – pfrank

+0

Bạn đang đúng :-) Đã chỉnh sửa –

Các vấn đề liên quan