Tôi đang cố phân tích hai giá trị từ một biểu đồ dữ liệu.
Các trường là số và khi chúng có dấu phẩy (ví dụ: 554,20), tôi không thể nhận được các số sau dấu phẩy.
Tôi đã thử parseInt
và parseFloat
. Tôi có thể làm cái này như thế nào?Làm thế nào để chuyển đổi chuỗi thành float trong JavaScript?
Trả lời
Nếu họ có nghĩa là để được giá trị riêng biệt, hãy thử này:
var values = "554,20".split(",")
var v1 = parseFloat(values[0])
var v2 = parseFloat(values[1])
Nếu họ có nghĩa là để trở thành một giá trị duy nhất (như trong tiếng Pháp, nơi một nửa được viết 0,5)
var value = parseFloat("554,20".replace(",", "."));
Điều gì về nơi bạn có một dấu phẩy được sử dụng như một nghìn seperator? Ví dụ: 1234 được viết dưới dạng 1,234 –
Bạn chỉ có thể xóa dấu phẩy, sau đó phân tích cú pháp đó. (ví dụ: thay thế bằng "") –
nó không an toàn lắm, như sconto = parseFloat ("5,, 5" .replace (",", ".")); trả về 5 hàng đầu để tin rằng đó là một số hợp lệ, nhưng bạn mất phần .5 hoặc bạn có thể coi nó không phải là số hợp lệ – max4ever
Thay thế dấu phẩy bằng dấu chấm.
này sẽ chỉ trả lại 554:
var value = parseFloat("554,20")
này sẽ trở lại 554,20:
var value = parseFloat("554.20")
Vì vậy, cuối cùng, bạn chỉ có thể sử dụng:
var fValue = parseFloat(document.getElementById("textfield").value.replace(",","."))
Đừng quên rằng parseInt()
chỉ nên được sử dụng để phân tích các số nguyên (không có dấu phẩy động). Trong trường hợp của bạn, nó sẽ chỉ trả lại 554. Ngoài ra, gọi parseInt() trên một phao sẽ không làm tròn số: nó sẽ lấy sàn của nó (số nguyên gần nhất thấp hơn).
Còn về "." hàng nghìn dấu phân cách? Như 4.554,20 cái gì sẽ trở lại ...? –
Bạn đã bao giờ thử thực hiện việc này chưa? : p
var str = '3.8';ie
alert(+(str) + 0.2);
+ (chuỗi) sẽ đúc chuỗi thành phao.
Tiện dụng!
Vì vậy, để giải quyết vấn đề của bạn, bạn có thể làm một cái gì đó như thế này:
var floatValue = +(str.replace(/,/,'.'));
Tôi thực sự thích giải pháp '+ (str)' - 'parseFloat' bỏ qua các ký tự không hợp lệ sau số,' + (str) 'trả về' NaN' trong những trường hợp đó, chính xác là những gì tôi cần. – Alex
Đây có vẻ là câu trả lời hay nhất, tương tự như truyền tới int bằng cách thay đổi ký hiệu hai lần bằng ~, như trong ~~ "45.2" = 45 –
Nếu bạn mở rộng đối tượng String như thế này ..
String.prototype.float = function() {
return parseFloat(this.replace(',', '.'));
}
.. bạn có thể chạy nó như thế này
"554,20".float()
> 554.20
công trình với dấu chấm cũng
"554.20".float()
> 554.20
typeof "554,20".float()
> "number"
Mặc dù thường được coi là biểu mẫu không đúng để sửa đổi nguyên mẫu đối tượng cơ sở. Điều gì sẽ xảy ra nếu một khung công tác khác cũng cố gắng thực hiện điều đó nhưng chức năng khác nhau? – phreakhead
@GusDeCool hoặc bất kỳ ai khác đang cố gắng thay thế nhiều hơn một nghìn dấu tách, một cách để làm là thay thế toàn bộ regex: /foo/g
. Chỉ cần nhớ rằng .
là một metacharacter, vì vậy bạn phải thoát khỏi nó hoặc đặt nó trong dấu ngoặc đơn (\.
hoặc [.]
). Dưới đây là một tùy chọn:
var str = '6.000.000';
str.replace(/[.]/g,",");
yea, thay thế không có regex chỉ thay thế một lần xuất hiện của ký tự. – Aukhan
Tôi có cùng một vấn đề ngoại trừ tôi không biết trước dấu phân cách hàng nghìn và dấu tách thập phân. Tôi đã viết thư viện để làm điều này. Nếu bạn quan tâm đến nó ở đây là: https://github.com/GuillaumeLeclerc/number-parsing
Bạn có thể sử dụng chức năng này.Nó sẽ thay thế dấu phẩy bằng '' và sau đó nó sẽ phân tích cú phápFlaot giá trị và sau đó nó sẽ điều chỉnh lại dấu phẩy trong giá trị.
function convertToFloat(val) {
if (val != '') {
if (val.indexOf(',') !== -1)
val.replace(',', '');
val = parseFloat(val);
while (/(\d+)(\d{3})/.test(val.toString())) {
val = val.toString().replace(/(\d+)(\d{3})/, '$1' + ',' + '$2');
}
}
return val;
}
- 1. Làm thế nào để chuyển đổi Char thành Float
- 2. Làm thế nào để chuyển đổi chuỗi thành giá trị float trong android
- 3. Làm thế nào để chuyển đổi một mảng các chuỗi thành một mảng float trong numpy?
- 4. Làm thế nào để chuyển đổi một chuỗi nhị phân thành một giá trị float?
- 5. Làm thế nào tôi có thể chuyển đổi một chuỗi thành một float trong mysql?
- 6. Chuyển đổi chuỗi tiền tệ thành float trong Objective-C
- 7. Javascript để chuyển đổi chuỗi thành số?
- 8. Làm thế nào để chuyển đổi chuỗi số (float) trong Perl
- 9. Chuyển đổi float [] thành byte [] thành float [] lần nữa
- 10. Làm thế nào để chuyển đổi giá trị float thành số nguyên trong php?
- 11. Làm thế nào để chuyển đổi một chuỗi thành một bản đồ trong javascript?
- 12. Làm thế nào để chuyển đổi từ chuỗi định dạng phân số thành thập phân hoặc Float trong Java?
- 13. Làm thế nào để chuyển đổi một chuỗi thành CharSequence?
- 14. Làm thế nào để chuyển đổi JSON thành chuỗi?
- 15. Làm thế nào để chuyển đổi chuỗi thành bitet?
- 16. VB.NET: Làm thế nào để chuyển đổi chuỗi thành Ngày?
- 17. Làm thế nào để chuyển đổi chuỗi Java thành byte []?
- 18. Làm thế nào để chuyển đổi NSString thành chuỗi C?
- 19. Làm thế nào để chuyển đổi chuỗi thành mảng byte?
- 20. Làm thế nào để chuyển đổi char thành chuỗi?
- 21. Làm thế nào để chuyển đổi Bitmap thành chuỗi Base64?
- 22. Làm thế nào để chuyển đổi chuỗi thành ObjectId
- 23. mssql chuyển đổi varchar thành float
- 24. Làm thế nào để chuyển đổi Float (Wrapper class) thành lớp wrapper Integer?
- 25. Làm thế nào để chuyển đổi một mảng float thành một byte [] và ngược lại?
- 26. Chuyển đổi hex sang float
- 27. C#: Chuyển đổi ushort thành float
- 28. Cách chuyển đổi mảng 4 byte thành float trong java
- 29. Java chuyển đổi float thành số nguyên
- 30. Làm thế nào để chuyển đổi chuỗi thành Hex và Hex thành chuỗi?
** xem thêm: ** http://stackoverflow.com/questions/24318654 – dreftymac