2013-09-02 2 views
2

나는 숫자에 스팅으로 저장되어 있습니다. "2,65424.00" 플로트 번호 2,65424.00으로 변환하고 형식을 유지하는 방법이 있습니까?숫자를 유지하는 루비 문자열

+0

를 다음과 같이 뭔가를 할 수 그러나. 질문은 약간 혼란 스럽습니다. 정교하게 말하면 좋겠습니까? 데이터가 어디에서 왔는지, 어디에서 표시 할 것인지 설명 할 수 있습니까? 이 값을 숫자로 사용하려면 수학 연산을 수행하고 싶습니까 (이 경우 정확하게 표시 할 수는 없습니다). 루비 숫자는 저장된 형식을 포함하지 않지만 형식을 표시하는 데는 여러 가지 방법이 있습니다. 그러나 따옴표없이 문자열을 표시하는 것은 매우 쉬운 일입니다. 그냥'puts' ('s'는 당신의 문자열)입니다. –

+1

아니요. '2,65424.00'은 유효한 Ruby 표현식이 아닙니다. 즉, 그러한 Ruby 객체는 존재하지 않습니다. 그러므로 문자열을 그런 것으로 변환 할 방법이 없습니다. – sawa

답변

0

integer의 경우 string.to_i 또는 float의 경우 string.to_f으로 문자열 개체를 변환 해보십시오.

+0

흠, 네 말이 맞아 ..하지만 OP를 도와주지 마라. :) –

2

아니요, 내부 표현은 이와 같이 변경할 수 없습니다. FloatFixnum에 대해 to_s 메서드를 작성하려면이 방법에 접근하는 유일한 방법입니다. 예를 들어 :

class Float 
    def to_s 
    # your formatting: sprintf("...", self) 
    end 
end 

당신이 다음 다음 플로트로 Fixnum이라는를 변환 할 수 Fixnum이라는에서 같은 표현을 얻을 싶지 때문에

는 플로트의 to_s 방법에 to_s 방법을 기반으로. 내 마음에

"When you write it like this #{265424}" 
=> "When you write it like this 2,65424.00" 

이 적절한 방법입니다 :

class Fixnum 
    def to_s 
    self.to_f.to_s 
    end 
end 

이렇게하면

265424.to_s 
=> "2,65424.00" 

, 또는 보간을 사용할 때 플로트에 to_s 전화를 통해 표현을 얻을 왜냐하면 당신은 당신의 숫자를 개별적으로 표현하기를 원하기 때문입니다. 괜찮습니다.하지만이 개별적인 표현은 문자열 수준에서 구현되어야합니다. 왜냐하면 여러분이 형성을 통해 멋지게 표시하고 싶다면 문자열이 무엇인지에 대한 것이기 때문입니다.

또한이 원숭이 패치 방식을 사용하는 것은 의문 스러울 수 있습니다. 도서관을 제공 할 것인지 여부에 따라 달라질 수 있습니다. 숫자를 가져 와서 서식이 지정된 전용 형식 방법을 설계하면 좋을 수도 있습니다.

1
You can not save float value with ',' as a delimiter in mysql 

당신이 수에 대한 특이한 형식입니다

"2,65424.00".gsub(',', '').to_f # 265424.0 
+0

그게 사실이야. '% .2f'% '2,65424.00'.delete (', '). to_f 이것을 사용할 수도 있습니다. –