31/12/2012

Cắt số lẻ trong số double

Trong các phần mềm tài chính, ngân hàng thường có bài toán như sau:
Cho một số double, bạn hãy cắt bỏ các số lẻ sau số lẻ thứ k trong phần thập phân.
Đứng trước bài toán này bạn thường nghĩ đến giải pháp cắt chuỗi. Biến double sang NSString rồi cắt chuỗi.
Tuy nhiên khi bạn chuyển số double sang NSString bằng string format %.*f bạn sẽ gặp phải vấn đề làm tròn số lên. Bạn lại nghĩ ra vậy tôi lấy đến k+1 số lẻ rồi cắt bỏ chữ số cuối cùng.Tuy nhiên giải pháp này lại bị vấn đề làm tròn số lan truyền khi chữ số thứ k+1 là số 9. Để tránh làm tròn số lan truyền một bạn khác lại đề nghị chuyển double sang NSNumber trước khi chuyển sang NSString. Một điều không may cho giải pháp này khi bạn chuyển các số double như 1.05, 0.05 thì bạn sẽ nhận được các số 1.049999..., 0.049999,.. (xem bài viết Vấn đề làm tròn số khi dùng double). Ngoài ra bạn cũng có thể nghĩ đến các hàm C khác khi modf, ... F giới thiệu cách sử dụng hàm floor như sau:
floor(x*pow(10,k)+1E-10)/pow(10,k) 

29/12/2012

Chạy ứng dụng Android trên PC

Đọc các bài báo sau  trên báo Tuổi trẻ:

và đang suy nghĩ miên man về công nghệ mà Blue Stacks sử dụng.Ngoài ra liệu việc làm này sẽ làm cho Android mạnh lên hay sẽ thu hẹp tầm ảnh hưởng của nó?
Về công nghệ thì theo các bài báo có chút thông tin tóm tắt như sau:

  • BlueStacks sử dụng BlueStacks App Player (BAP) 
  • BAP thực hiện giải pháp chuyển đổi ảo hoá Windows/Mac OS nhanh chóng thông qua công nghệ đám mây BlueStack Cloud Connect 
  • Cho phép đồng bộ ứng dụng trên Android smartphone với PC.