"1.112" yi 1 yerine 1112 tamsayısına çevirmenin düzgün bir yöntemi var mı?
Bir tane var ama düzgün değil:
"1,112".split(',').join.to_i #=> 1112
Yanıtlar:
Buna ne dersin?
"1,112".delete(',').to_i
Ayrıca, kodunuzun doğru bir şekilde yerelleştirildiğinden veya kullanıcıların "uluslararası" gösterime alıştığından emin olmak isteyebilirsiniz. Örneğin, "1.112" aslında farklı ülkelerde farklı sayılar anlamına gelir. Almanya'da bu sayı bin yerine biraz fazla 1 anlamına geliyor.
İlgili Wikipedia makalesi http://en.wikipedia.org/wiki/Decimal_mark adresindedir . Şu anda kötü yazılmış gibi görünüyor. Örneğin bir Çinli olarak Çin'deki bin ayırıcıyla ilgili bu açıklamanın nereden geldiğinden emin değilim.
Biraz daha uygun
"1,1200.00".gsub(/[^0-9]/,'')
"1 200 200" ün de düzgün çalışmasını sağlar
'1,1200.00'.gsub(/[^0-9\.]/,'').to_f
.
"1,1200.00"
için "1120000"
? Sadece ,
(veya yerel ayara bağlı olarak) değiştirmek istemiyor musunuz .
? Ayrıca, bu onu bir tam sayıya veya kayan noktaya dönüştürmez, sadece sınırlayıcıları olmayan bir dizeye dönüştürür.
Şunu kullanarak yapardım String#tr
:
"1,112".tr(',','').to_i # => 1112
String count = count.replace(",", "");