Hướng dẫn how to remove trailing zero in php? - làm cách nào để xóa số 0 ở cuối trong php?

Bất cứ ai cũng có thể cho tôi một lời giải thích (và có thể là một ví dụ) về cách tước các số không kéo dài từ một số sử dụng PHP.

Ví dụ:

"Lat":"37.422005000000000000000000000000","Lon":"-122.84095000000000000000000000000"

Sẽ được chuyển sang:

"Lat":"37.422005","Lon":"-122.84095"

Tôi đang cố gắng tước các số không để làm cho nó dễ đọc hơn. Tôi đã thử sử dụng

$string = "37.422005000000000000000000000000";
echo (float)$string;
4 nhưng điều này cũng thay thế các số không bên trong số.

Hướng dẫn how to remove trailing zero in php? - làm cách nào để xóa số 0 ở cuối trong php?

Arnaud

6.9798 Huy hiệu vàng49 Huy hiệu bạc69 Huy hiệu Đồng8 gold badges49 silver badges69 bronze badges

Đã hỏi ngày 1 tháng 3 năm 2011 lúc 0:13Mar 1, 2011 at 0:13

2

Quên tất cả các RTRIMS, và các biểu thức chính quy, tọa độ là phao và nên được coi là phao, chỉ cần chuẩn bị biến với

$string = "37.422005000000000000000000000000";
echo (float)$string;
5 để đúc nó từ một chuỗi đến một chiếc phao:

$string = "37.422005000000000000000000000000";
echo (float)$string;

output:

37.422005

Kết quả thực tế bạn có là phao nhưng được truyền cho bạn dưới dạng chuỗi do giao thức HTTP, thật tốt khi biến chúng trở lại dạng tự nhiên để thực hiện các tính toán, v.v.

Trường hợp kiểm tra: http://codepad.org/tvb2xyy3

Lưu ý: Về nhận xét về độ chính xác điểm nổi trong PHP, xem điều này: https://stackoverflow.com/a/3726761/353790: Regarding the comment about floating point precision in PHP, see this: https://stackoverflow.com/a/3726761/353790

Đã trả lời ngày 1 tháng 3 năm 2011 lúc 0:23Mar 1, 2011 at 0:23

RobertpittrobertpittRobertPitt

56.4K21 Huy hiệu vàng113 Huy hiệu bạc159 Huy hiệu đồng21 gold badges113 silver badges159 bronze badges

9

Hãy thử với RTRIM:

$number = rtrim($number, "0");

Nếu bạn có số thập phân chấm dứt trong 0 của 0 (ví dụ: 123.000), bạn cũng có thể muốn loại bỏ dấu phân cách thập phân, có thể khác nhau tùy thuộc vào ngôn ngữ đã sử dụng. Để loại bỏ nó một cách đáng tin cậy, bạn có thể làm như sau:decimal separator, which may be different depending on the used locale. To remove it reliably, you may do the following:

$number = rtrim($number, "0");
$locale_info = localeconv();
$number = rtrim($number, $locale_info['decimal_point']);

Đây tất nhiên không phải là một giải pháp chống đạn, và có thể không phải là giải pháp tốt nhất. Nếu bạn có một số như 12300.00, nó sẽ không loại bỏ số 0 từ phần số nguyên, nhưng bạn có thể điều chỉnh nó theo nhu cầu cụ thể của bạn.

Đã trả lời ngày 1 tháng 3 năm 2011 lúc 0:18Mar 1, 2011 at 0:18

Jweyrichjweyrichjweyrich

30.4K5 Huy hiệu vàng63 Huy hiệu bạc96 Huy hiệu Đồng5 gold badges63 silver badges96 bronze badges

6

Bạn sẽ gặp nhiều rắc rối nếu bạn thử cắt tỉa hoặc các thao tác chuỗi khác. Hãy thử theo cách này.

$string = "37.422005000000000000000000000000";

echo $string + 0;

Outputs:

37.422005

Đã trả lời ngày 28 tháng 6 năm 2011 lúc 8:51Jun 28, 2011 at 8:51

9

Trong trường hợp của tôi, tôi đã làm như sau, mở rộng các câu trả lời khác ở đây:

rtrim((strpos($number,".") !== false ? rtrim($number, "0") : $number),".");

Bởi vì tôi cũng phải loại bỏ số thập phân nếu một số toàn bộ được hiển thị

Ví dụ, điều này sẽ hiển thị các số sau

2.00, 1.00, 28.50, 16.25 

Như

"Lat":"37.422005","Lon":"-122.84095"
0

Còn hơn là

"Lat":"37.422005","Lon":"-122.84095"
1

Mà, với tôi, không thể hiện chính xác chúng.

Chỉnh sửa mới nhất cũng dừng các số, chẳng hạn như "100" từ RTRIM'ed đến 1, chỉ bằng cách cắt giảm 0 bên phải nếu gặp phải số thập phân.

Đã trả lời ngày 17 tháng 10 năm 2012 lúc 23:24Oct 17, 2012 at 23:24

Warren Sergentwarren SergentWarren Sergent

2.4343 huy hiệu vàng37 Huy hiệu bạc42 Huy hiệu đồng3 gold badges37 silver badges42 bronze badges

5

Bạn cũng có thể sử dụng

$string = "37.422005000000000000000000000000";
echo (float)$string;
6.

"Lat":"37.422005","Lon":"-122.84095"
2

kết quả trong

37.422005

Đã trả lời ngày 1 tháng 3 năm 2011 lúc 0:21Mar 1, 2011 at 0:21

FarrayfarrayFarray

8.0843 Huy hiệu vàng32 Huy hiệu bạc37 Huy hiệu đồng3 gold badges32 silver badges37 bronze badges

2

Hầu hết các giải pháp này sẽ cắt giảm các chữ số quan trọng trong các số như "100" (không có số thập phân). Đây là một giải pháp đơn giản không gặp vấn đề này:

"Lat":"37.422005","Lon":"-122.84095"
3

Tôi nghĩ rằng bao gồm tất cả các kịch bản khác nhau.

"Lat":"37.422005","Lon":"-122.84095"
4

Đã trả lời ngày 4 tháng 11 năm 2013 lúc 21:43Nov 4, 2013 at 21:43

mpenmpenmpen

263K261 Huy hiệu vàng822 Huy hiệu bạc1202 Huy hiệu đồng261 gold badges822 silver badges1202 bronze badges

2

Nếu bạn muốn tước các số không dư ra khỏi cuối nhưng chỉ đến một vị trí thập phân nhất định, đây là một biểu thức hữu ích để làm điều đó (ví dụ 0.30000 sẽ hiển thị 0,30 và 0,0003000 sẽ hiển thị 0,0003).

"Lat":"37.422005","Lon":"-122.84095"
5

Tất nhiên, {2} kiểm soát giới hạn vị trí thập phân.

Đã trả lời ngày 22 tháng 6 năm 2012 lúc 18:36Jun 22, 2012 at 18:36

4

Trims Trailing Zeroes, nhưng chỉ sau vị trí thập phân -ví dụ chúng tôi không muốn chuyển đổi 100 -> 1. Nó cũng sẽ tước khoảng thời gian nếu chỉ có số không theo nó.

"Lat":"37.422005","Lon":"-122.84095"
6

Đã trả lời ngày 19 tháng 8 năm 2012 lúc 0:02Aug 19, 2012 at 0:02

mpenmpenmpen

263K261 Huy hiệu vàng822 Huy hiệu bạc1202 Huy hiệu đồng261 gold badges822 silver badges1202 bronze badges

4

Nếu bạn muốn tước các số không dư ra khỏi cuối nhưng chỉ đến một vị trí thập phân nhất định, đây là một biểu thức hữu ích để làm điều đó (ví dụ 0.30000 sẽ hiển thị 0,30 và 0,0003000 sẽ hiển thị 0,0003).

"Lat":"37.422005","Lon":"-122.84095"
7

Tất nhiên, {2} kiểm soát giới hạn vị trí thập phân.

Đã trả lời ngày 22 tháng 6 năm 2012 lúc 18:36Feb 5, 2019 at 15:25

Trims Trailing Zeroes, nhưng chỉ sau vị trí thập phân -ví dụ chúng tôi không muốn chuyển đổi 100 -> 1. Nó cũng sẽ tước khoảng thời gian nếu chỉ có số không theo nó.Devon

Đã trả lời ngày 19 tháng 8 năm 2012 lúc 0:029 gold badges64 silver badges93 bronze badges

Nếu bạn muốn một giải pháp chấp nhận số lượng thập phân tối thiểu và tối đa, điều này sẽ hoạt động:

"Lat":"37.422005","Lon":"-122.84095"
8

Điều này được mã hóa cứng để sử dụng địa phương Hoa Kỳ, nhưng nên dễ dàng điều chỉnh cho các địa phương khác.

Đã trả lời ngày 5 tháng 2 năm 2019 lúc 15:25

Devondevon4 gold badges62 silver badges67 bronze badges

33.5K9 Huy hiệu vàng64 Huy hiệu bạc93 Huy hiệu ĐồngMar 1, 2011 at 0:22

Hướng dẫn how to remove trailing zero in php? - làm cách nào để xóa số 0 ở cuối trong php?

Bạn nên sử dụng hàm tròn có khả năng thao tác số hơn là

$string = "37.422005000000000000000000000000";
echo (float)$string;
7.William Durand

Số tròn kết quả sẽ dựa trên cài đặt

$string = "37.422005000000000000000000000000";
echo (float)$string;
8 (mặc định 14) của bạn.1 gold badge25 silver badges37 bronze badges

2

Will B.

"Lat":"37.422005","Lon":"-122.84095"
9
$string = "37.422005000000000000000000000000";
echo (float)$string;
0

16.6K4 Huy hiệu vàng62 Huy hiệu bạc67 Huy hiệu ĐồngJun 4, 2021 at 11:19

Hướng dẫn how to remove trailing zero in php? - làm cách nào để xóa số 0 ở cuối trong php?

Đã trả lời ngày 1 tháng 3 năm 2011 lúc 0:22Arash Younesi

William Durandwilliam Durand1 gold badge11 silver badges22 bronze badges

2

5.3591 Huy hiệu vàng25 Huy hiệu bạc37 Huy hiệu đồng

$string = "37.422005000000000000000000000000";
echo (float)$string;
1

Xóa số Zeros Trailing + Hàng nghìnDec 4, 2012 at 11:21

Đã trả lời ngày 4 tháng 6 năm 2021 lúc 11:19Joe Kuan

Arash Younesiarash Younesi1 silver badge3 bronze badges

1

1.5311 huy hiệu vàng11 Huy hiệu bạc22 Huy hiệu đồng

$string = "37.422005000000000000000000000000";
echo (float)$string;
2

Đối với tôi, tôi cần một giải pháp tiếp theo để chuyển đổi các giá trị theo cấp số nhân và các số đơn giản như 10000 sang chữ số quan trọng khác không

Đã trả lời ngày 4 tháng 12 năm 2012 lúc 11:21

Đã trả lời ngày 19 tháng 9 năm 2012 lúc 13:43Sep 19, 2012 at 13:43

$string = "37.422005000000000000000000000000";
echo (float)$string;
9 sẽ thực hiện thủ thuật:

$string = "37.422005000000000000000000000000";
echo (float)$string;
3

Đã trả lời ngày 1 tháng 3 năm 2011 lúc 0:16Mar 1, 2011 at 0:16

ShadshadShad

14.8k2 Huy hiệu vàng21 Huy hiệu bạc34 Huy hiệu đồng2 gold badges21 silver badges34 bronze badges

4