草庐IT

floating-point-conversion

全部标签

ruby - 在 ruby​​ 中没有四舍五入的 float 格式

有一个floatnum=22.0098。如何格式化它以限制float后的3位数字?我尝试了sprintf('%.3f',num)但返回的是22.010,不过我需要22.009 最佳答案 我可以考虑使用bigdecimal。不确定它是否矫枉过正:require'bigdecimal'BigDecimal::new("22.0098").truncate(3).to_f#=>22.009 关于ruby-在ruby​​中没有四舍五入的float格式,我们在StackOverflow上找到一个类

Ruby 字符串到 int/float 的转换

假设我有一个字符串,'$3,444.11'。如何将其转换为float3,444.11?我有一个表单域。用户可以插入"3,444.11"、"3444.11"或"$3,444.11"或"€3,444.11"。我需要的是作为float的3,444.11。我必须求助于正则表达式吗?或者,是否已经存在我忽略的功能? 最佳答案 我认为标准库中没有任何东西可以为您做这件事。这是一个快速的单行代码:'$3,444.11'.gsub(/[^\d\.]/,'').to_f#=>3444.11但是,您可能想看一下money用于货币字符串高级处理的gem。

ruby - 如何在 Ruby 中对 float 数组进行排序?

只是想知道如何在Ruby中对float组进行排序,因为“排序”和“排序!”仅适用于整数数组。 最佳答案 float组当然可以排序:>>[6.2,5.8,1.1,4.9,13.4].sort=>[1.1,4.9,5.8,6.2,13.4]也许您的数组中有一个nil,它不能用任何东西排序。 关于ruby-如何在Ruby中对float数组进行排序?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/quest

ruby - 将 float 转换为相应的位段

给定一个RubyFloat值,例如,f=12.125我想结束一个包含float符号(1位)、指数(11位)和小数(52位)的3元素数组。(Ruby的float是IEEE754double64位表示。)最好的方法是什么?位级操作似乎不是Ruby的强项。请注意,我想要的是位,而不是它们对应的数值。例如,为1.0的浮点值获取[0,-127,1]并不是我所追求的——我想要字符串中的实际位形式或等效表示,如["0","0ff","00000000000"]。 最佳答案 位数据可以通过数组pack公开,因为Float不提供内部函数。str=[1

c++ - float 的长度在 32 和 40 位之间变化

我在将float值导出到文件时遇到了一个奇怪的问题。我希望每个float都具有相同的长度(显然),但我的程序有时将其导出为32位数,有时导出为40位数。仍然显示此行为的程序的最小工作示例是:#includeconstchar*fileName="C:/Users/Path/To/TestFile.txt";floatarray[5];intmain(intargc,char*argv[]){floattemp1=1.63006e-33f;floattemp2=1.55949e-32f;array[0]=temp1;array[1]=temp2;array[2]=temp1;array[

c++ - float 的长度在 32 和 40 位之间变化

我在将float值导出到文件时遇到了一个奇怪的问题。我希望每个float都具有相同的长度(显然),但我的程序有时将其导出为32位数,有时导出为40位数。仍然显示此行为的程序的最小工作示例是:#includeconstchar*fileName="C:/Users/Path/To/TestFile.txt";floatarray[5];intmain(intargc,char*argv[]){floattemp1=1.63006e-33f;floattemp2=1.55949e-32f;array[0]=temp1;array[1]=temp2;array[2]=temp1;array[

ruby - float 域错误

刚刚在我的应用程序中出现“FloatDomainError”,消息“NaN”,服务器通常会在其中描述攻击。服务器错误页面将我指向这些行(好吧,第一行):n=((self.weight*(c.percent)/100)/c.package_weight).to_in.timesdo问题似乎出在.to_i上,它旨在将总计8.35转换为整数,这样我就可以做n.times了。问题是,如果我把to_i拿走,我会收到一条错误消息,从逻辑上讲,没有针对float8.35的“times”方法。但我不明白为什么它不让我将8.35舍入为整数。我也尝试过.floor,但我得到了FloatDomainErro

Ruby 检查偶数是否为 float

我想检查数字是否是偶数!我尝试了以下方法:a=4.0a.is_a?Integer=>falsea.even?=>undefinedmethodforFloat那么如何检查数字是否为偶数呢? 最佳答案 如果您不确定您的变量是否有小数点后的任何内容,并且想在转换为整数之前检查以检查奇数/偶数,您可以这样做:a=4.6b=4.0putsa%1==0&&a.to_i.even?#=>falseputsb%1==0&&a.to_i.even?#=>true另外,如果你想创建偶数?Float类的方法:classFloatdefeven?self

c++ - float 的二进制相等比较是否正确?

我正在研究不同的内存块操作函数,在基准测试期间我注意到,我对IsEqualRange(double*begin1,double*end1,double*begin2,double*end2)的实现是比MSVC和GCC上的std::equals(...)快得多。进一步的调查表明,memcmp不是对double和float进行block比较,而是在for循环中一一进行比较。float的二进制比较在什么情况下会导致错误的结果?什么时候可以二进制比较(相等)float/double组?还有其他我不应该使用memcmp的基本类型吗? 最佳答案

c++ - float 的二进制相等比较是否正确?

我正在研究不同的内存块操作函数,在基准测试期间我注意到,我对IsEqualRange(double*begin1,double*end1,double*begin2,double*end2)的实现是比MSVC和GCC上的std::equals(...)快得多。进一步的调查表明,memcmp不是对double和float进行block比较,而是在for循环中一一进行比较。float的二进制比较在什么情况下会导致错误的结果?什么时候可以二进制比较(相等)float/double组?还有其他我不应该使用memcmp的基本类型吗? 最佳答案