jjzjj

ruby - 在 Ruby 中将整数转换为带符号的字符串

我有一份报告,其中列出了总值,然后在括号中列出了变化。例如:歌曲:45首(比上周增加10首)所以我想将整数10打印为“+10”,将-10打印为“-10”我现在正在做(song_change>=0?'+':'')+song_change.to_s有没有更好的办法? 最佳答案 "%+d"%song_changeString#%根据字符串中的打印说明符格式化右侧。打印说明符“%d”也表示十进制。整数,添加到打印说明符的“+”强制始终打印适当的符号。您可以在Kernel#sprintf中找到有关打印说明符的更多信息,或在manpagefor

ruby - 如何检查一个值是否是 Integer()、Float() 或 Rational() 的有效输入?

这大致基于“HowtoconvertaStringtoIntegerorFloat”。如果我想使用Ruby的内置转换机制将数字字符串输入转换为其“最合适的类型”,我可以这样做:defconvert(input)value=Integer(input)rescuenilvalue||=Float(input)rescuenilvalue||=Rational(input)rescuenilvalueendconvert('1')#=>1convert('1_000')#=>1000convert('0xff')#=>255convert('0.5')#=>0.5convert('1e2'

ruby - 如何模拟 Fixnum 变量的整数溢出?

我目前正在将一种算法从Java转换为Ruby,但由于Ruby中缺少整数溢出,我遇到了一些障碍。假设我的值为2663860877,它大于最大整数2147483648。在Java中,它环绕,我应该得到-1631106419。我找到了这段代码,但它似乎不起作用:defforce_overflow(i)ifi2147483647i&0xffffffffelseiendend并且'ing变量不会像您期望的那样强制它为负。 最佳答案 假设32位整数具有二进制补码负数,这应该可行:defforce_overflow_signed(i)force_

ruby - 使用默认值将 Ruby 字符串转换为整数

是否有一个Ruby方法接受一个字符串和一个默认值,如果字符串表示整数则将其转换为整数,否则返回默认值?更新我认为以下答案更可取:classStringdeftry_to_i(default=nil)/^\d+$/===self?to_i:defaultendend以下是您应该避免异常的证据:>deftime;t=Time.now;yield;Time.now-tend>time{1000000.times{|i|('_'1.3491532>time{1000000.times{|i|Integer.new('_'27.190596426 最佳答案

ruby - `-' :String 的未定义方法 "100"

这段Ruby代码:income="100"bills="52"putsincome-bills抛出一个错误:./to_f.rb:6:undefinedmethod`-'for"100":String(NoMethodError)在对字符串执行数学运算时,Ruby不会自动将字符串转换为数字吗? 最佳答案 Ruby是一个dynamically-typed,strictly-typed(或“强类型”)语言。Lua是另一种这样的语言。前者意味着变量可以包含任何类别的值。后者——你遇到的情况——意味着类型强制不会自动发生。将它们与动态类型和松

ruby - 我可以检查一个数组例如只在 ruby​​ 中保存整数?

标题,我认为是self声明。我是一名java开发人员,想确保我的数组只包含整数值。我知道ruby​​中的一切都是对象。我发现遍历数组并检查每个元素很不方便。在ruby​​中有什么捷径吗? 最佳答案 使用Enumerable#all?用一个block。整数是类Integer的实例在ruby中。[1,2,3].all?{|i|i.is_a?(Integer)}#=>true[1,2,3,'4'].all?{|i|i.is_a?(Integer)}#=>false 关于ruby-我可以检查一个

ruby - 如何从可能具有前导零的字符串中解析数字?

在ruby​​中,我正在解析以下格式的日期:24092008。我想将每个部分(年、月、日)转换为数字。我使用正则表达式将它们拆分,生成三个字符串,我将它们传递给Integer构造函数。date=~/^([\d]{2})([\d]{2})([\d]{4})/year=Integer($3)month=Integer($2)day=Integer($1)当它到达月份线时,它崩溃如下:`Integer':invalidvalueforInteger:"09"(ArgumentError)我花了一段时间才意识到它将前导零解释为八进制数,而09不是有效的八进制数(它与“07”一起工作正常)。是否

ruby - 在 Ruby 的 BigDecimal 中是否使用 String 或 Integer

引用BigDecimal类的文档,n,m=a.precsprecreturnsnumberofsignificantdigits(n)andmaximumnumberofsignificantdigits(m)ofa.我对以下与BigDecimal相关的输出感到困惑。require'bigdecimal'BigDecimal.new('1').precs#=>[9,18]BigDecimal.new(1).precs#=>[9,27]我不明白为什么当传递String时,有效数字的最大数目比传递Fixnum时少。它还会导致任何精度问题吗? 最佳答案

ruby - 在 ruby​​/rails 中对包含数字的字符串进行排序

我想根据他们在Facebook上的赞数对我所有的位置进行排序。但是facebook_likes不是一个integer,它是一个string。这是我使用的Rails代码:@locations=Location.order("facebook_likesASC").all现在我得到这样的东西:10100201230440000050...如何根据值进行排序,以便签到次数最多的位置位于顶部。这个使用字符串而不是整数的解决方案是否从一开始就存在缺陷?谢谢你的帮助! 最佳答案 @locations=Location.all.sort{|a,b

Ruby 语言好奇的整数运算 : (-5/2) ! = -(5/2)

我花了一些时间完成一个关于拆分数组的非常简单的任务。直到我发现:2==5/2和-3==-5/2。要获得-2,我需要将括号中的负号去掉:-2==-(5/2)。为什么会这样?据我了解,结果四舍五入为最小整数,但是(-2.5).to_i==-2。很好奇。#https://www.codewars.com/kata/swap-the-head-and-the-tail/train/ruby#-5/2!=-(5/2)defswap_head_tailaa[-(a.size/2)..-1]+a[a.size/2...-(a.size/2)]+a[0...a.size/2]end