2012-04-18 47 views
9

Tôi cần làm tròn số đến hai chữ số thập phân. Ngay bây giờ các vòng sau đến số nguyên gần nhất tôi đoánsố vòng đến 2 chữ số thập phân

puts [expr {round($total_rate)}] 

Nếu tôi làm điều gì đó như dưới đây thì không hiệu quả. Có cách nào khác không?

puts [expr {round($total_rate,2)}] 
+0

Bạn không thể làm nổi dấu chấm động cho bất kỳ số chữ số thập phân nào lớn hơn 0. Nó không có số thập phân. Nó có các vị trí nhị phân và chúng không thể phục vụ được. Bạn cần sử dụng một số thập phân thập phân, thường thông qua trình định dạng. – EJP

Trả lời

10
expr {double(round(100*$total_rate))/100} 

dụ

% set total_rate 1.5678 
1.5678 
% expr {double(round(100*$total_rate))/100} 
1.57 
% set total_rate 1.4321 
1.4321 
% expr {double(round(100*$total_rate))/100} 
1.43 
+2

'proc tcl :: mathfunc :: roundto {giá trị thập phân} {expr {tròn (10 ** $ số thập phân * $ giá trị) /10.0 ** $ decimalplaces}}; expr {roundto ($ total_rate, 2)} ' –

12

Cách đơn giản nhất để làm tròn đến một số cụ thể của chữ số thập phân là với format:

puts [format "%.2f" $total_rate] 

Hãy lưu ý rằng nếu bạn đang sử dụng làm tròn giá trị cho các phép tính tiếp theo thay vì hiển thị cho người dùng, hầu hết các giá trị bạn in bằng cách làm tròn đến X số thập phân sẽ không có đại diện chính xác trong số học nhị phân (mà Tcl sử dụng nội bộ, như số lượng lớn các ngôn ngữ lập trình khác). Tốt nhất là đặt trước làm tròn cho một số lượng DP cụ thể đến mức bạn đang hiển thị giá trị cho mọi người.

1
puts [format "%.2f" $total_rate] 

Bằng cách sử dụng định dạng, chúng ta có thể xem kết quả ở đầu ra nhưng làm thế nào để sử dụng cùng giá trị trong chương trình, ví dụ, chúng ta có thể thấy 1,448 đến 1,45 trong đầu ra nhưng chúng ta có thể sử dụng 1,45 trong chương trình sau đó.

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