Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Hiển thị 2 chữ số thập phân trong MySQL/PHP?

Trong PHP: number_format()

Hàm number_format() định dạng số với số chữ số thập phân và dấu phân cách tùy chọn.

Cú pháp

number_format(float $num, int $decimals = 0, string $dec_point = '.', string $thousands_sep = ','): string

Ví dụ

<?php
$number1 = 10.3423;
$number2 = 10;

$result1 = number_format($number1, 2);  // "10.34"
$result2 = number_format($number2, 2);  // "10.00"

echo $result1 . '
'; // 10.34 echo $result2 . '
'; // 10.00 ?>

Kết quả

10.34
10.00

Với dấu phân cách hàng nghìn

echo number_format(1234567.89, 2, '.', ',');  // "1,234,567.89"
echo number_format(1234567.89, 2, ',', '.');  // "1.234.567,89" (định dạng VN/EU)

Trong MySQL: FORMAT() và ROUND()

FORMAT() - Trả về STRING

mysql> SELECT FORMAT(10.3423, 2);    -- '10.34'
mysql> SELECT FORMAT(10, 2);         -- '10.00'
mysql> SELECT FORMAT(1234567.89, 2); -- '1,234,567.89' (có dấu phẩy nghìn)

ROUND() - Trả về NUMBER

mysql> SELECT ROUND(10.3423, 2);   -- 10.34 (kiểu số)
mysql> SELECT ROUND(10.345, 2);    -- 10.35 (làm tròn chuẩn)
mysql> SELECT ROUND(10, 2);        -- 10 (không thêm .00)

CAST/DECIMAL cho cột

SELECT CAST(price AS DECIMAL(10,2)) FROM products;

So sánh

HàmTrả vềDùng cho
PHP number_format()StringHiển thị web, export CSV/Excel
MySQL FORMAT()StringHiển thị trực tiếp từ SQL
MySQL ROUND()NumberTính toán tiếp, lưu DB
CAST AS DECIMALNumberĐịnh nghĩa schema, tính toán chính xác

Lưu ý tiền tệ

Đối với tiền tệ, luôn dùng DECIMAL thay vì FLOAT/DOUBLE để tránh lỗi làm tròn binary floating point:

-- Tốt
price DECIMAL(12,2)

-- Tránh
price FLOAT
price DOUBLE