2010-01-04 40 views
6

Tôi đang thực hiện một ứng dụng nhỏ để thêm giá và số thập phân. Điểm là bình thường để sử dụng với số thập phân, nhưng làm thế nào tôi có thể viết số thập phân với dấu phẩy là đầu vào (543,35 thay vì 543,35) và sau đó có thể thay đổi nó với điểm đến cơ sở dữ liệu (mysql)? Sau đó in nó trở lại tạo thành cơ sở dữ liệu bằng dấu phẩy. Lý do là dấu phẩy (,) được sử dụng nhiều hơn ở Phần Lan so với điểm (.) Khi viết số thập phân.Số thập phân bằng dấu phẩy thay vì điểm (php và sql)

Cảm ơn bạn rất nhiều!

Samuel

+0

Bạn đang sử dụng cơ sở dữ liệu nào? –

+0

Nếu bạn đang trình bày ở nhiều hơn một định dạng, đây là một vấn đề trình bày để nó sẽ được xử lý tốt hơn trong PHP. Nếu không, bạn có thể định dạng giá trị từ SQL. –

+0

Tôi đang sử dụng mysql –

Trả lời

6

bạn không cần làm bất cứ điều gì trong kết thúc sql. bạn muốn định dạng giá trị thập phân trong php (điều này giả định php4/php5): Thiết lập các tham số $ dec_point thứ ba ''

// string number_format (float $number , int $decimals , string $dec_point , string $thousands_sep) 
<?php 

$number = 1234.56; 

// French notation 
$nombre_format_francais = number_format($number, 2, ',', ' '); 
// 1 234,56 

$number = 1234.5678; 

// english notation without thousands seperator 
$english_format_number = number_format($number, 2, '.', ''); 
// 1234.57 

?> 

nguồn: http://php.net/manual/en/function.number-format.php

Cheers!

+0

Cảm ơn bạn! Bây giờ tôi có thể giới thiệu số với dấu phẩy 12,50 thay vì 12,50 (dễ dàng hơn cho bàn phím Phần Lan) để nó có thể được công nhận với số thập phân? –

+0

Phải. Bạn chỉ cần lo lắng về định dạng của số trên giao diện người dùng và để MySQL lưu trữ nó như thường lệ. Số cơ bản vẫn như cũ dù bạn hiển thị như thế nào. – mirezus

0

Như đã nói, tốt nhất là lưu giá trị dưới dạng phao và sau đó định dạng để hiển thị. Để thay thế cho number_format được đề xuất trước đó(), bạn có thể thử money_format() http://us.php.net/manual/en/function.money-format.php Nó không hoạt động trong môi trường cửa sổ mặc dù điều đó quan trọng đối với bạn.

+0

Rất tiếc, tôi nghĩ rằng tôi đã đọc câu hỏi của bạn quá nhanh ... bạn không cần định dạng tiền tệ, phải không? –

+0

Có, không cần định dạng tiền tệ. Những gì tôi vẫn đang tìm kiếm, đó là có khả năng để viết số thập phân với dấu phẩy là đầu vào? Tôi không biết nếu có thể xây dựng câu hỏi của tôi đúng cách? –

0

Không, sử dụng dấu phẩy làm dấu tách thập phân cho các phép tính số học không được hỗ trợ. Lọc đầu vào của bạn và thay thế dấu phẩy bằng dấu chấm, sau đó định dạng đầu ra của bạn theo ý muốn.

1

PHP number_format chức năng là những gì bạn cần:

number_format(5.50, 2, ','); 

... nên làm các trick.

+0

Không, không đọc lại. –

+0

Rất tiếc, nó thực sự không ... xấu của tôi. (ở một khía cạnh không phải lúc nào tôi cũng ngạc nhiên khi thấy mọi người bình luận về những câu trả lời sai mà không cung cấp câu trả lời đúng. Đi trên các bạn, bạn mang đến cho cộng đồng nhiều :) – Nicolas

10
$input = '5,50'; 
$output = str_replace(',', '.', $input); 
var_dump($output); // string(4) "5.50" 
$number = (float)$output; 
var_dump($number); // float(5.5) 
+0

Cảm ơn bạn! Wery tốt và rõ ràng câu trả lời !! –

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