Để hoàn thiện, mặc dù câu hỏi này là cổ xưa, nhưng điều đáng nói là tập hợp các chức năng filter_var[]
, không chỉ tự xử lý các bit định dạng mà còn xác nhận hoặc vệ sinh đầu ra, do đó an toàn hơn khi sử dụng trong bối cảnh của một hình thức được điền bởi người dùng [hoặc, cuối cùng, một cơ sở dữ liệu có thể có một số trường bị hỏng/không nhất quán]:
$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
printf["The total is: %.2f\n", $InvoicedUnits * $pricePerUnit]; // both are now floats and the result is a float, formatted to two digits after the decimal sign.
Điều này làm sạch đầu ra [vẫn sẽ vẫn là một chuỗi] và sẽ chấp nhận cài đặt địa phương hiện tại của bộ phân cách thập phân [ví dụ: DOT so với dấu phẩy]; Ngoài ra, có nhiều tùy chọn hơn trên hướng dẫn sử dụng PHP để xác thực [sẽ tự động chuyển đổi kết quả thành float
nếu hợp lệ]. Kết quả sẽ hơi khác nhau cho các kịch bản khác nhau - ví dụ: Nếu bạn biết trước rằng $InvoiceLineItem
sẽ chỉ có các chữ số và ký hiệu hợp lệ cho các số điểm nổi hoặc nếu bạn cần 'làm sạch' trường trước, hãy loại bỏ khoảng trắng, các ký tự đi lạc [như ký hiệu tiền tệ!] Và Vì vậy, Forth.
Cuối cùng, nếu bạn muốn có đầu ra được định dạng độc đáo-vì tổng số được thể hiện bằng một loại tiền tệ-bạn cũng nên xem xét lớp NumberFormatter
tích hợp và làm một cái gì đó như:
$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
Điều này cũng sẽ xử lý hàng ngàn máy phân cách [không gian, dấu chấm, dấu phẩy ...] theo ngôn ngữ được cấu hình và những thứ lạ mắt tương tự khác.
Ngoài ra, nếu bạn muốn, bạn có thể sử dụng ''
[chuỗi trống] cho chuỗi locale mặc định [được đặt bởi máy chủ hoặc tùy chọn bởi trình duyệt] và $fmt->getSymbol[NumberFormatter::INTL_CURRENCY_SYMBOL]
để lấy mã số 3 chữ cái mặc định [có thể không phải là những gì bạn Muốn, vì giá thường được đưa ra bằng một loại tiền tệ cụ thể - các chức năng này không tính đến tỷ giá tiền tệ!].
Pillepop2003 tại Yahoo Dot de ¶
aa tại geb-team dot de ¶ — Get float value of a variable
16 năm trước
iliyazelenkog tại gmail dot com ¶[mixed $value
]: float
T-Soloveychik tại ya.ru ¶
5 năm trướcPierpaocira ¶floatval[] should not be used on objects, as doing so will emit an
0 level error and return 1. $InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
Movila Dot e Dot V tại Gmail Dot Com ¶
ZFCB13 tại gmail dot com
Các chuỗi rất có thể sẽ trả về 0 mặc dù điều này phụ thuộc vào các ký tự ngoài cùng bên trái của chuỗi. Các quy tắc phổ biến của việc đúc phao áp dụng.
Ví dụ
Ví dụ #1 floatVal [] ví dụfloatval[] Example
$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
1Ví dụ #2 FloatVal [] Ví dụ: Không phải số bên trái không phải là sốfloatval[] non-numeric leftmost characters Example
$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
2Xem thêm
- boolval [] - Nhận giá trị boolean của một biến
- intval [] - Nhận giá trị số nguyên của một biến
- strval [] - Nhận giá trị chuỗi của một biến
- setType [] - Đặt loại biến
- Loại tung hứng
Brewal Dot Renault tại Gmail Dot Com ¶ ¶
8 năm trước
$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
3$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
4$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
5$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
6$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
7$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
8$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
9Ẩn danh ¶ ¶
17 năm trước
filter_var[]
0
filter_var[]
1
$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
9Alexey M ¶ ¶
6 năm trước
filter_var[]
3
filter_var[]
4
$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
9Papapinguoin ¶ ¶
11 năm trước
filter_var[]
6
filter_var[]
7
filter_var[]
8
$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
9Ẩn danh khi bắt đầu chấm là ¶ ¶
18 năm trước
float
0
float
1
float
2
float
3radler63 tại hotmail dot com ¶
4 năm trước
float
4
float
5
float
6
$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
9Chris tại Georgakopoulos Dot Com ¶ ¶
13 năm trước
float
8
float
9
$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
9Steve tại Opilo Dot Net ¶
14 năm trước
$InvoiceLineItem
1
$InvoiceLineItem
2
$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
9Secretr tại Nospam Dot E107 Dot org ¶ ¶
11 năm trước
$InvoiceLineItem
4
$InvoiceLineItem
5
$InvoiceLineItem
6
$InvoiceLineItem
7
$InvoiceLineItem
8Michiel ¶ ¶
14 năm trước
$InvoiceLineItem
9
NumberFormatter
0
NumberFormatter
1
NumberFormatter
2
NumberFormatter
3Secretr tại Nospam Dot E107 Dot org ¶ ¶
11 năm trước
NumberFormatter
4
NumberFormatter
5
NumberFormatter
6
NumberFormatter
7Michiel ¶ ¶
Pillepop2003 tại Yahoo Dot de ¶
NumberFormatter
8
NumberFormatter
9
$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
917 năm trước ¶
aa tại geb-team dot de ¶
''
1
''
2
$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
916 năm trước ¶
iliyazelenkog tại gmail dot com ¶
''
4
''
5
''
64 năm trước ¶
T-Soloveychik tại ya.ru ¶
''
7
''
8
''
9
$fmt->getSymbol[NumberFormatter::INTL_CURRENCY_SYMBOL]
0
$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
95 năm trước ¶
T-Soloveychik tại ya.ru ¶
$fmt->getSymbol[NumberFormatter::INTL_CURRENCY_SYMBOL]
2
$fmt->getSymbol[NumberFormatter::INTL_CURRENCY_SYMBOL]
3
$fmt->getSymbol[NumberFormatter::INTL_CURRENCY_SYMBOL]
45 năm trước ¶
Pierpaocira ¶
$fmt->getSymbol[NumberFormatter::INTL_CURRENCY_SYMBOL]
5
6 năm trước ¶
Movila Dot e Dot V tại Gmail Dot Com ¶
$fmt->getSymbol[NumberFormatter::INTL_CURRENCY_SYMBOL]
6
$fmt->getSymbol[NumberFormatter::INTL_CURRENCY_SYMBOL]
7
$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
9ZFCB13 tại gmail dot com ¶
Movila Dot e Dot V tại Gmail Dot Com ¶
$fmt->getSymbol[NumberFormatter::INTL_CURRENCY_SYMBOL]
9
$value
0
$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
9ZFCB13 tại gmail dot com ¶
7 năm trước
$value
2
$value
3
$value
4
$value
5
$value
6
$value
7
$value
8
$value
9Jason tại Shadonet Dot Com ¶ ¶
13 năm trước
value
0
value
1
$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
919 năm trước ¶
14 năm trước
value
3
value
4
$InvoicedUnits = [float] filter_var[$InvoiceLineItem->InvoicedUnits,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$pricePerUnit = [float] filter_var[$InvoiceLineItem->PricePerUnit,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION]];
$fmt = new NumberFormatter['de_DE', NumberFormatter::CURRENCY];
echo 'Total is: ' . $fmt->formatCurrency[$InvoicedUnits * $pricePerUnit, 'EUR'] . PHP_EOL;
9Secretr tại Nospam Dot E107 Dot org ¶ ¶
11 năm trước
value
6
value
7
value
8
value
9