From: "Florian G. Pflug" Date: 2005-05-06T02:12:45+09:00 Subject: Re: Float to Rational --------------ms040002080105030508000502 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Jannis Harder wrote: > Luke Galea wrote: > >> Hi All, >> >> I need to convert a float to a fraction.. So 1.5 to 1 1/2.. >> The rational class would represent at least 3/2 well.. but I was >> surprised to find that there is no way to easily go from float to >> rational.. >> Am I missing an easier way? >> Thanks in advance >> > I wrote a small float => rational method: [snipped code] That a neat way of extracting the exponent! ;-) Be carefull, howevery - this will not always give the expected results. Try e.g. puts (0.2).to_r This yields: 3602879701896397/18014398509481984 which of course is nearly 2/5, but since 0.2 has infinitly many digits when converted to a binary representation, a rounding error occurs. greetings, Florian Pflug --------------ms040002080105030508000502 Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIL4DCC BewwggVVoAMCAQICAzAABDANBgkqhkiG9w0BAQQFADCByDELMAkGA1UEBhMCQVQxDzANBgNV BAgTBlZpZW5uYTEPMA0GA1UEBxMGVmllbm5hMSEwHwYDVQQKExhzb2x1dGlvbi14IFNvZnR3 YXJlIEdtYkgxHjAcBgNVBAsTFUNlcnRpZmljYXRlIEF1dGhvcml0eTEqMCgGA1UEAxMhc29s dXRpb24teDo6Y2VydGlmaWNhdGUtYXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlob3N0bWFz dGVyQHNvbHV0aW9uLXguY29tMB4XDTA0MTAwODE4MTkxN1oXDTA5MTAwODE4MTkxN1owgdUx CzAJBgNVBAYTAkFUMQ8wDQYDVQQIEwZWaWVubmExDzANBgNVBAcTBlZpZW5uYTEhMB8GA1UE ChMYc29sdXRpb24teCBTb2Z0d2FyZSBHbWJIMSkwJwYDVQQKEyBjMjFmOTY5YjVmMDNkMzNk NDNlMDRmOGYxMzZlNzY4MjEeMBwGA1UECxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRkwFwYD VQQDExBGbG9yaWFuIEcuIFBmbHVnMRswGQYJKoZIhvcNAQkBFgxmZ3BAcGhsby5vcmcwgZ8w DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAPaQmTO2jrGX3ZKnGs4+VWaQhLkqUYfeL2jzI4Xa 2amxM7T/mdAzEsyXY5yQd2itdgfX2QFeSdIpB7/kF8NdxEK2jCeYSAwbqw+YXulAg3E4XKR5 qOROdEZIy50/K4X0yKeU/xy5LmIfLoqfJQ2Ao5XQarTvBRPbAnJmITSqkBHZAgMBAAGjggLT MIICzzAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIFoDAOBgNVHQ8BAf8EBAMCBeAwHQYD VR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMCMB0GA1UdDgQWBBSn0xyNYO5HD0vtMeCcUCTz J13zozCB9QYDVR0jBIHtMIHqgBTaa1BCkjUW3vQWeh5IMqml0irzFKGBzqSByzCByDELMAkG A1UEBhMCQVQxDzANBgNVBAgTBlZpZW5uYTEPMA0GA1UEBxMGVmllbm5hMSEwHwYDVQQKExhz b2x1dGlvbi14IFNvZnR3YXJlIEdtYkgxHjAcBgNVBAsTFUNlcnRpZmljYXRlIEF1dGhvcml0 eTEqMCgGA1UEAxMhc29sdXRpb24teDo6Y2VydGlmaWNhdGUtYXV0aG9yaXR5MSgwJgYJKoZI hvcNAQkBFhlob3N0bWFzdGVyQHNvbHV0aW9uLXguY29tggEAMBcGA1UdEQQQMA6BDGZncEBw aGxvLm9yZzAkBgNVHRIEHTAbgRlob3N0bWFzdGVyQHNvbHV0aW9uLXguY29tMEkGA1UdHwRC MEAwPqA8oDqGOGh0dHBzOi8vYWRtaW4uaHEuc29sdXRpb24teC5jb20vcGhwa2kvY2Fjcmwv c3hfY2FjcmwuY3JsMEIGCWCGSAGG+EIBDQQ1FjNQSFBraS9PcGVuU1NMIEdlbmVyYXRlZCBF LW1haWwgKFMvTUlNRSkgQ2VydGlmaWNhdGUwNAYJYIZIAYb4QgECBCcWJWh0dHBzOi8vYWRt aW4uaHEuc29sdXRpb24teC5jb20vcGhwa2kwIwYJYIZIAYb4QgEDBBYWFG5zX3Jldm9rZV9x dWVyeS5waHA/MEAGCWCGSAGG+EIBCAQzFjFodHRwczovL2FkbWluLmhxLnNvbHV0aW9uLXgu Y29tL3BocGtpL3BvbGljeS5odG1sMA0GCSqGSIb3DQEBBAUAA4GBAIpKvrQrG2shBRMGfyGw 4068QBerNs9JMYvkEuaJqZ3Xsdz8Ju+sA4090r9v6BtdZWJ29opyj34+l9Q/BM8mKoIHUB8U Vy0iNpL0rsB9wphSCva4vnyO+Y9okcC+kgCcY8QAqq+z929pMURLtWcJeQS1L4Ae0qzL+3Ry cp+WdH3GMIIF7DCCBVWgAwIBAgIDMAAEMA0GCSqGSIb3DQEBBAUAMIHIMQswCQYDVQQGEwJB VDEPMA0GA1UECBMGVmllbm5hMQ8wDQYDVQQHEwZWaWVubmExITAfBgNVBAoTGHNvbHV0aW9u LXggU29mdHdhcmUgR21iSDEeMBwGA1UECxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MSowKAYD VQQDEyFzb2x1dGlvbi14OjpjZXJ0aWZpY2F0ZS1hdXRob3JpdHkxKDAmBgkqhkiG9w0BCQEW GWhvc3RtYXN0ZXJAc29sdXRpb24teC5jb20wHhcNMDQxMDA4MTgxOTE3WhcNMDkxMDA4MTgx OTE3WjCB1TELMAkGA1UEBhMCQVQxDzANBgNVBAgTBlZpZW5uYTEPMA0GA1UEBxMGVmllbm5h MSEwHwYDVQQKExhzb2x1dGlvbi14IFNvZnR3YXJlIEdtYkgxKTAnBgNVBAoTIGMyMWY5Njli NWYwM2QzM2Q0M2UwNGY4ZjEzNmU3NjgyMR4wHAYDVQQLExVDZXJ0aWZpY2F0ZSBBdXRob3Jp dHkxGTAXBgNVBAMTEEZsb3JpYW4gRy4gUGZsdWcxGzAZBgkqhkiG9w0BCQEWDGZncEBwaGxv Lm9yZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA9pCZM7aOsZfdkqcazj5VZpCEuSpR h94vaPMjhdrZqbEztP+Z0DMSzJdjnJB3aK12B9fZAV5J0ikHv+QXw13EQraMJ5hIDBurD5he 6UCDcThcpHmo5E50RkjLnT8rhfTIp5T/HLkuYh8uip8lDYCjldBqtO8FE9sCcmYhNKqQEdkC AwEAAaOCAtMwggLPMAkGA1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgWgMA4GA1UdDwEB/wQE AwIF4DAdBgNVHSUEFjAUBggrBgEFBQcDBAYIKwYBBQUHAwIwHQYDVR0OBBYEFKfTHI1g7kcP S+0x4JxQJPMnXfOjMIH1BgNVHSMEge0wgeqAFNprUEKSNRbe9BZ6HkgyqaXSKvMUoYHOpIHL MIHIMQswCQYDVQQGEwJBVDEPMA0GA1UECBMGVmllbm5hMQ8wDQYDVQQHEwZWaWVubmExITAf BgNVBAoTGHNvbHV0aW9uLXggU29mdHdhcmUgR21iSDEeMBwGA1UECxMVQ2VydGlmaWNhdGUg QXV0aG9yaXR5MSowKAYDVQQDEyFzb2x1dGlvbi14OjpjZXJ0aWZpY2F0ZS1hdXRob3JpdHkx KDAmBgkqhkiG9w0BCQEWGWhvc3RtYXN0ZXJAc29sdXRpb24teC5jb22CAQAwFwYDVR0RBBAw DoEMZmdwQHBobG8ub3JnMCQGA1UdEgQdMBuBGWhvc3RtYXN0ZXJAc29sdXRpb24teC5jb20w SQYDVR0fBEIwQDA+oDygOoY4aHR0cHM6Ly9hZG1pbi5ocS5zb2x1dGlvbi14LmNvbS9waHBr aS9jYWNybC9zeF9jYWNybC5jcmwwQgYJYIZIAYb4QgENBDUWM1BIUGtpL09wZW5TU0wgR2Vu ZXJhdGVkIEUtbWFpbCAoUy9NSU1FKSBDZXJ0aWZpY2F0ZTA0BglghkgBhvhCAQIEJxYlaHR0 cHM6Ly9hZG1pbi5ocS5zb2x1dGlvbi14LmNvbS9waHBraTAjBglghkgBhvhCAQMEFhYUbnNf cmV2b2tlX3F1ZXJ5LnBocD8wQAYJYIZIAYb4QgEIBDMWMWh0dHBzOi8vYWRtaW4uaHEuc29s dXRpb24teC5jb20vcGhwa2kvcG9saWN5Lmh0bWwwDQYJKoZIhvcNAQEEBQADgYEAikq+tCsb ayEFEwZ/IbDjTrxAF6s2z0kxi+QS5ompndex3Pwm76wDjT3Sv2/oG11lYnb2inKPfj6X1D8E zyYqggdQHxRXLSI2kvSuwH3CmFIK9ri+fI75j2iRwL6SAJxjxACqr7P3b2kxREu1Zwl5BLUv gB7SrMv7dHJyn5Z0fcYxggP2MIID8gIBATCB0DCByDELMAkGA1UEBhMCQVQxDzANBgNVBAgT BlZpZW5uYTEPMA0GA1UEBxMGVmllbm5hMSEwHwYDVQQKExhzb2x1dGlvbi14IFNvZnR3YXJl IEdtYkgxHjAcBgNVBAsTFUNlcnRpZmljYXRlIEF1dGhvcml0eTEqMCgGA1UEAxMhc29sdXRp b24teDo6Y2VydGlmaWNhdGUtYXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlob3N0bWFzdGVy QHNvbHV0aW9uLXguY29tAgMwAAQwCQYFKw4DAhoFAKCCAnswGAYJKoZIhvcNAQkDMQsGCSqG SIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDUwNTA1MTcxMjM0WjAjBgkqhkiG9w0BCQQxFgQU Da1gpTvn3qP9u3dIlJYuVKT+3h8wUgYJKoZIhvcNAQkPMUUwQzAKBggqhkiG9w0DBzAOBggq hkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgwgeEG CSsGAQQBgjcQBDGB0zCB0DCByDELMAkGA1UEBhMCQVQxDzANBgNVBAgTBlZpZW5uYTEPMA0G A1UEBxMGVmllbm5hMSEwHwYDVQQKExhzb2x1dGlvbi14IFNvZnR3YXJlIEdtYkgxHjAcBgNV BAsTFUNlcnRpZmljYXRlIEF1dGhvcml0eTEqMCgGA1UEAxMhc29sdXRpb24teDo6Y2VydGlm aWNhdGUtYXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlob3N0bWFzdGVyQHNvbHV0aW9uLXgu Y29tAgMwAAQwgeMGCyqGSIb3DQEJEAILMYHToIHQMIHIMQswCQYDVQQGEwJBVDEPMA0GA1UE CBMGVmllbm5hMQ8wDQYDVQQHEwZWaWVubmExITAfBgNVBAoTGHNvbHV0aW9uLXggU29mdHdh cmUgR21iSDEeMBwGA1UECxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MSowKAYDVQQDEyFzb2x1 dGlvbi14OjpjZXJ0aWZpY2F0ZS1hdXRob3JpdHkxKDAmBgkqhkiG9w0BCQEWGWhvc3RtYXN0 ZXJAc29sdXRpb24teC5jb20CAzAABDANBgkqhkiG9w0BAQEFAASBgIKtR6UYVgALfziiEqhw fhJ1BONit1pzjF1/x2ufyQYtd+xx2qlDYWmbcNRHAnfX56pkbj6DZdRytp+FKwJtbmENTch1 BkM6MJEcUP4TCBhMoi0Dq1zf9gZjb1m/aa7zI5Wq7pn1H6aE25caVGPU7vlMRW9TWm51wEPR qveG3rMbAAAAAAAA --------------ms040002080105030508000502--