有谁知道为什么 range(-8.00, 8.00, 0.05) 似乎失败了?
Array
(
[0] => -8
[1] => -7.95
[2] => -7.9
[3] => -7.85
[4] => -7.8
[5] => -7.75
[6] => -7.7
[7] => -7.65
[8] => -7.6
[9] => -7.55
[10] => -7.5
[11] => -7.45
[12] => -7.4
[13] => -7.35
[14] => -7.3
[15] => -7.25
[16] => -7.2
[17] => -7.15
[18] => -7.1
[19] => -7.05
[20] => -7
[21] => -6.95
[22] => -6.9
[23] => -6.85
[24] => -6.8
[25] => -6.75
[26] => -6.7
[27] => -6.65
[28] => -6.6
[29] => -6.55
[30] => -6.5
[31] => -6.45
[32] => -6.4
[33] => -6.35
[34] => -6.3
[35] => -6.25
[36] => -6.2
[37] => -6.15
[38] => -6.1
[39] => -6.05
[40] => -6
[41] => -5.95
[42] => -5.9
[43] => -5.85
[44] => -5.8
[45] => -5.75
[46] => -5.7
[47] => -5.65
[48] => -5.6
[49] => -5.55
[50] => -5.5
[51] => -5.45
[52] => -5.4
[53] => -5.35
[54] => -5.3
[55] => -5.25
[56] => -5.2
[57] => -5.15
[58] => -5.1
[59] => -5.05
[60] => -5
[61] => -4.95
[62] => -4.9
[63] => -4.85
[64] => -4.8
[65] => -4.75
[66] => -4.7
[67] => -4.65
[68] => -4.6
[69] => -4.55
[70] => -4.5
[71] => -4.45
[72] => -4.4
[73] => -4.35
[74] => -4.3
[75] => -4.25
[76] => -4.2
[77] => -4.15
[78] => -4.1
[79] => -4.05
[80] => -4
[81] => -3.95
[82] => -3.9
[83] => -3.85
[84] => -3.8
[85] => -3.75
[86] => -3.7
[87] => -3.65
[88] => -3.6
[89] => -3.55
[90] => -3.5
[91] => -3.45
[92] => -3.4
[93] => -3.35
[94] => -3.3
[95] => -3.25
[96] => -3.2
[97] => -3.15
[98] => -3.1
[99] => -3.05
[100] => -3
[101] => -2.95
[102] => -2.9
[103] => -2.85
[104] => -2.8
[105] => -2.75
[106] => -2.7
[107] => -2.65
[108] => -2.6
[109] => -2.55
[110] => -2.5
[111] => -2.45
[112] => -2.4
[113] => -2.35
[114] => -2.3
[115] => -2.25
[116] => -2.2
[117] => -2.15
[118] => -2.1
[119] => -2.05
[120] => -2
[121] => -1.95
[122] => -1.9
[123] => -1.85
[124] => -1.8
[125] => -1.75
[126] => -1.7
[127] => -1.65
[128] => -1.6
[129] => -1.55
[130] => -1.5
[131] => -1.45
[132] => -1.4
[133] => -1.35
[134] => -1.3
[135] => -1.25
[136] => -1.2
[137] => -1.15
[138] => -1.1
[139] => -1.05
[140] => -1
[141] => -0.95000000000002
[142] => -0.90000000000002
[143] => -0.85000000000002
[144] => -0.80000000000002
[145] => -0.75000000000002
[146] => -0.70000000000002
[147] => -0.65000000000002
[148] => -0.60000000000002
[149] => -0.55000000000002
[150] => -0.50000000000002
[151] => -0.45000000000002
[152] => -0.40000000000002
[153] => -0.35000000000002
[154] => -0.30000000000002
[155] => -0.25000000000002
[156] => -0.20000000000002
[157] => -0.15000000000002
[158] => -0.10000000000002
[159] => -0.05000000000002
[160] => -2.0053403382292E-14
[161] => 0.04999999999998
[162] => 0.09999999999998
[163] => 0.14999999999998
[164] => 0.19999999999998
[165] => 0.24999999999998
[166] => 0.29999999999998
[167] => 0.34999999999998
[168] => 0.39999999999998
[169] => 0.44999999999998
[170] => 0.49999999999998
[171] => 0.54999999999998
[172] => 0.59999999999998
[173] => 0.64999999999998
[174] => 0.69999999999998
[175] => 0.74999999999998
[176] => 0.79999999999998
[177] => 0.84999999999998
[178] => 0.89999999999998
[179] => 0.94999999999998
[180] => 0.99999999999998
[181] => 1.05
[182] => 1.1
[183] => 1.15
[184] => 1.2
[185] => 1.25
[186] => 1.3
[187] => 1.35
[188] => 1.4
[189] => 1.45
[190] => 1.5
[191] => 1.55
[192] => 1.6
[193] => 1.65
[194] => 1.7
[195] => 1.75
[196] => 1.8
[197] => 1.85
[198] => 1.9
[199] => 1.95
[200] => 2
[201] => 2.05
[202] => 2.1
[203] => 2.15
[204] => 2.2
[205] => 2.25
[206] => 2.3
[207] => 2.35
[208] => 2.4
[209] => 2.45
[210] => 2.5
[211] => 2.55
[212] => 2.6
[213] => 2.65
[214] => 2.7
[215] => 2.75
[216] => 2.8
[217] => 2.85
[218] => 2.9
[219] => 2.95
[220] => 3
[221] => 3.05
[222] => 3.1
[223] => 3.15
[224] => 3.2
[225] => 3.25
[226] => 3.3
[227] => 3.35
[228] => 3.4
[229] => 3.45
[230] => 3.5
[231] => 3.55
[232] => 3.6
[233] => 3.65
[234] => 3.7
[235] => 3.75
[236] => 3.8
[237] => 3.85
[238] => 3.9
[239] => 3.95
[240] => 4
[241] => 4.05
[242] => 4.1
[243] => 4.15
[244] => 4.2
[245] => 4.25
[246] => 4.3
[247] => 4.35
[248] => 4.4
[249] => 4.45
[250] => 4.5
[251] => 4.55
[252] => 4.6
[253] => 4.65
[254] => 4.7
[255] => 4.75
[256] => 4.8
[257] => 4.85
[258] => 4.9
[259] => 4.95
[260] => 5
[261] => 5.05
[262] => 5.1
[263] => 5.15
[264] => 5.2
[265] => 5.25
[266] => 5.3
[267] => 5.35
[268] => 5.4
[269] => 5.45
[270] => 5.5
[271] => 5.55
[272] => 5.6
[273] => 5.65
[274] => 5.7
[275] => 5.75
[276] => 5.8
[277] => 5.85
[278] => 5.9
[279] => 5.95
[280] => 6
[281] => 6.05
[282] => 6.1
[283] => 6.15
[284] => 6.2
[285] => 6.25
[286] => 6.3
[287] => 6.35
[288] => 6.4
[289] => 6.45
[290] => 6.5
[291] => 6.55
[292] => 6.6
[293] => 6.65
[294] => 6.7
[295] => 6.75
[296] => 6.8
[297] => 6.85
[298] => 6.9
[299] => 6.95
[300] => 7
[301] => 7.05
[302] => 7.1
[303] => 7.15
[304] => 7.2
[305] => 7.25
[306] => 7.3
[307] => 7.35
[308] => 7.4
[309] => 7.45
[310] => 7.5
[311] => 7.55
[312] => 7.6
[313] => 7.65
[314] => 7.7
[315] => 7.75
[316] => 7.8
[317] => 7.85
[318] => 7.9
[319] => 7.95
[320] => 8
)
最佳答案
那是因为 floating point numbers are not precise并非所有数字都可以使用 float 准确表示。
关于php - range(-8.00, 8.00, 0.05) 表现得很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6069705/
有没有人用ruby解决这个问题:假设我们有:a=8.1999999我们想将它四舍五入为2位小数,即8.20,然后乘以1,000,000得到8,200,000我们是这样做的;(a.round(2)*1000000).to_i但是我们得到的是8199999,为什么?奇怪的是,如果我们乘以1000、100000或10000000而不是1000000,我们会得到正确的结果。有人知道为什么吗?我们正在使用ruby1.9.2并尝试使用1.9.3。谢谢! 最佳答案 每当你在计算中得到时髦的数字时使用bigdecimalrequire'bi
defreverse(ary)result=[]forresult[0,0]inaryendresultendassert_equal["baz","bar","foo"],reverse(["foo","bar","baz"])这行得通,我想了解原因。有什么解释吗? 最佳答案 如果我使用each而不是for/in重写它,它看起来像这样:defreverse(ary)result=[]#forresult[0,0]inaryary.eachdo|item|result[0,0]=itemendresultendforainb基本上就
当我写下面的代码时:x=[1,2,3]x我得到这个输出:[1,2,3,[...]][1,2,3,[...]][1,2,3,[...]]我不应该只得到[1,2,3,[1,2,3]]吗?解释是什么? 最佳答案 这没什么奇怪的。数组的第四个元素就是数组本身,所以当你求第四个元素时,你得到的是数组,当你求第四个元素的第四个元素时,你得到的是数组,当你求第四个元素时,你得到的是数组。第四个元素的第四个元素的第四个元素的元素......你得到了数组。就这么简单。唯一有点不寻常的是Array#to_s检测到这样的递归,而不是进入无限循环,而是返回
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它
以下测试中的第3个失败:specify{(0.6*2).shouldeql(1.2)}specify{(0.3*3).shouldeql(0.3*3)}specify{(0.3*3).shouldeql(0.9)}#thisonefails这是为什么呢?这是浮点问题还是ruby或rspec问题? 最佳答案 从rspec-2.1开始specify{(0.6*2).shouldbe_within(0.01).of(1.2)}在那之前:specify{(0.6*2).shouldbe_close(1.2,0.01)}
我使用以下钩子(Hook)来检查在执行includeFoo时执行包含的模块:moduleFoodefself.included(includer)putsincluderendendModule#include在模块中(通常使用它的地方)与在顶层的行为不同。在模块内部,self是模块,它是Module的一个实例.当我调用include,执行包含的模块是whatself是:moduleBarputsself#=>BarincludeFoo#=>includer:Barend在ruby脚本的顶层,self是main,它是Object的一个实例.当我调用include在顶层,包含的模块是
在为提供json的Rails3.0.3应用构建API时,发生了一些意外行为。以下是Controller。问题是关于respond_with。我已经在应用程序Controller中有respond_to:json。createAction正常运行,创建后数据也被发回。但是更新操作的respond_with不会发回任何数据。响应主体为空白。defcreateline=get_lineinput_header=line.input_headers.create(params[:input_header])respond_with(input_header,:location=>api_v1_
今天我遇到了数组元素赋值的一些奇怪行为:arr=["a","b"]arr2=[1,2]arr.unshift(arr2)#=[[1,2],"a","b"]arr.push(arr2)#=>["a","b",[1,2]]但是,这是有道理的:arr[0,0]=arr2#=>[1,2,"a","b"]我知道在[0,0]中,第一个零是index,第二个是该数组中从index开始的元素数。在我看来它应该与unshift相同,但事实并非如此。谁能解释一下这种行为? 最佳答案 如果我们diveintotherubysourcecode,我们会找到
我正在构建一个Rails应用程序并且使用的是Rails4.0.1。我有一个错误,并注意到它在3个月前被称为rails上的一个错误,所以我决定:捆绑更新并获得rails4.0.3这样做之后,测试和服务器都不会启动,并且会抛出错误:gems/railties-4.0.3/lib/rails/railtie/configuration.rb:95:in`method_missing':undefinedmethod`action_mailer'for#(NoMethodError)目前我在config/environments/*中注释掉了action_mailer行,但最好能找到一个真正的
我对某些ruby行为感到困惑。看下面的代码:[127].pack("C")=="\x7f"#=>true这是有道理的。现在:[128].pack("C")#=>"\x80""\x80"#=>"\x80"[128].pack("C")=="\x80"#=>falsepackoption"C"代表8-bitunsigned(unsignedchar),应该可以存储128的值。两个字符串也打印相同的东西,那么为什么它们不相等呢?这与编码有关吗?我使用的是ruby2.0.0p247。 最佳答案 这是错误的,因为编码不同:[128].