当我尝试float用作模板参数时,编译器会为此代码而烦恼,同时int工作正常.
是因为我不能float用作模板参数吗?
#include<iostream>
using namespace std;
template <class T, T defaultValue>
class GenericClass
{
private:
T value;
public:
GenericClass()
{
value = defaultValue;
}
T returnVal()
{
return value;
}
};
int main()
{
GenericClass <int, 10> gcInteger;
GenericClass < float, 4.6f> gcFlaot;
cout << "\n sum of integer is "<<gcInteger.returnVal();
cout << "\n sum of float is "<<gcFlaot.returnVal();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
错误:
main.cpp: In function `int main()':
main.cpp:25: error: `float' is not a …Run Code Online (Sandbox Code Playgroud) 我一直想知道如何制作一个自己计算功率(例如2 3)的功能.在大多数语言中,这些都包含在标准库中,主要是作为pow(double x, double y),但我怎么能自己编写呢?
我在考虑for loops,但它认为我的大脑进入了一个循环(当我想用非整数指数做一个力量,比如5 4.5或负2-2)并且我疯了;)
那么,我该如何编写一个计算实数幂的函数呢?谢谢
哦,也许重要的是要注意:我不能使用功能(例如exp)的功能,这将使这最终无用.
我尝试编写一种算法来将小数简化为一小部分,并意识到它并不太简单.令人惊讶的是,我在网上看到了我发现的所有代码,这些代码要么太长,要么在某些情况下不起作用.更令人讨厌的是,它们不适用于重复小数.我想知道是否会有一位数学家/程序员在这里理解所有涉及的过程,将小数简化为一小部分.任何人?
有点像这个问题,但相反.
给定一个串像1,1/2或者1 2/3,什么是将其转换成一个浮动的最好方法?我正在考虑逐个使用正则表达式,但也许有人知道更好的方法,或者预先存在的解决方案.我希望我可以使用eval,但我认为第三种情况可以防止这种情况发生.
最近我写了一段代码:
const int sections = 10;
for(int t= 0; t < 5; t++){
int i = pow(sections, 5- t -1);
cout << i << endl;
}
Run Code Online (Sandbox Code Playgroud)
结果是错误的:
9999
1000
99
10
1
Run Code Online (Sandbox Code Playgroud)
如果我只使用这个代码:
for(int t = 0; t < 5; t++){
cout << pow(sections,5-t-1) << endl;
}
Run Code Online (Sandbox Code Playgroud)
问题不再发生:
10000
1000
100
10
1
Run Code Online (Sandbox Code Playgroud)
有没有人给我解释?非常感谢你!
我正在使用RStudio,R Markdown,Latex和Pandoc来清理数据,构造变量,运行我的分析并报告结果.我对可重复研究的概念不熟悉,但我很迷恋.很有道理.
动态表格和数字都没有问题.然而,动态文本让我很难过.我可以插入内联代码来说95%的统计数据都是错误的,但我不确定如何以可重现的方式改变我的语言.
例如,如果我有一个对象x = 0.66并且我想写"3个牙医中的2个使用Crest"怎么办?我可以查看x,0.66的当前值,并在文本中键入"2 out of 3",但这是不可重现的.假设我得到新数据并重新运行我的分析,x变为0.52.我的文字已经过时了.当然,我可以动态地报告52%的牙医更喜欢Crest,但是当一切报告为百分比时,报告会变得陈旧.
我的想法是,当我想要改变写作时,我可以创建我可以在文本中调用的函数.例如,"out.of"函数可以用于if else语句来生成文本:
ifelse(x < 0.09,"fewer than 1 out of 10",
ifelse(x >= 0.09) & x < 0.11,"roughly 1 out of 10",
ifelse(x >= 0.11 & x < 0.15,"slightly more than 1 out of 10",
ifelse(x >= 0.15 & x < 0.19,"nearly 2 out of 5",
ifelse(x >= 0.19 & x < 0.21,"roughly 2 out of 5",
...
ifelse(x >= 0.95 & x < 0.99,"nearly all",
ifelse(x >= 0.99,"all","fubar"))...)
Run Code Online (Sandbox Code Playgroud)
我还可以创建一个分数函数,它可以做十分之一,五分之二,三分之一......
我相信其他人已经解决了这个问题.任何线索?想法?
我试图取小数点后的所有内容并将其显示为分数.找不到有关如何实现这一点的Objective-c.我正在使用double我的变量格式,不确定这是否重要.这就是我为我的答案输出格式化的方式:[theTextField setText:[NSString stringWithFormat:@"%f''", (myVariable)]];这显示为十进制,但是它真的很喜欢整数和分数(即.)7 1/2而不是7.5000.先谢谢你!
更新:5/13/2011
好吧,我得到它显示7 1/16,但数学的东西是关闭的.因为即使通过改变分割的值,它也不会从1/16变化.我在哪里错了?如果有人能够真正使这个工作正常,请完整地发布它是如何完成的.这应该是简单的,但不是太耗时.请完整地发布它是如何完成的.谢谢.
更新:如果这个答案不起作用,请查看我的其他帖子,这有效!将小数转换为分数
假设我有一个实数.我想用整数a和b的形式a + sqrt(b)来近似它.但我不知道a和b的值.当然,我宁愿用a和b的小值得到一个很好的近似值.让我们暂时不确定"好"和"小"是什么意思.这些术语的任何合理定义都可以.
有找到它们的理智方式吗?类似于用于查找小数的小数近似的连续分数算法.有关分数问题的更多信息,请参见此处.
编辑:澄清一下,这是一个任意的实数.我只有一堆数字.因此,根据我们想要的近似值有多好,a和b可能存在也可能不存在.蛮力自然不是一个特别好的算法.我能想到的最好的方法是开始向我的实数添加整数,对结果求平方,然后看看我是否接近整数.相当蛮力,而不是一个特别好的算法.但如果没有更好的存在,那本身就很有趣.
编辑:显然b必须为零或正.但是a可以是任何整数.
最好用一个例子来描述问题.假设我的小数值为100.227273.
100.227273*X = Y.
我需要找到给出整数Y的最小正整数X.
我们需要将计算出的值(例如3.33333000540733337)转换为3 1/3.我试过的任何库如https://github.com/peterolson/BigRational.js都会将其转换为最准确的有理数,而我只关注近似有理数,到.01有效小数.
在ruby中,我们目前使用Rational(1.333).理性化(Rational(0.01)),它给出1作为整数,1作为分子,3作为分母.
对可能有用的算法的任何想法都会很棒.
我在这方面的数学有点不稳定。有人知道我如何使用* /-+和for循环以外的数学函数来计算10 ^ 2.2之类的幂吗?我没有访问数学库的权限(并且无法导入/包含它),但是需要计算这些东西。嗯..也许我应该看看数学库是如何做到的。
我正在寻找一种将浮点数转换为有理数的算法,以便保证有理数计算回原始浮点数,并且分母被最小化。
一个简单的算法只能将浮点数的实际值返回为 X / 2 N,但对于不是有限二进制分数的任何东西,2 N往往非常大。例如,数字 0.1,当存储在双精度浮点数中时,实际上近似为 ³??²???????¹???³????????????????? ???(分母为 2 55)。但是,将 0.1 转换为 ¹??? 显然更好,而且¹???将评估为 ³??²?????¹???³?????????????????????? 在浮点运算下。
一个相关的问题是用最少的数字打印十进制浮点数(本文描述了一些技术),这可以被认为是这个问题的一个特殊版本,附加约束是分母必须是 10 的幂。
有一个现有的问题,并且可能更多,但它们没有转换后的有理数必须评估为原始浮点数的约束。
我正在制作一个简单的计算器,你可以选择一个功能,然后2个输入来得到你的答案.这是一个简洁的小程序,除了权力之外,一切都运行顺畅.每个号码都正常工作.
但根据这个:5^2=24, 5^3=624.我在用pow(number1,number2).
#include <iostream>
#include<math.h>
using namespace std;
int main()
{
for(;;){
int func;
int number1;
int number2;
cout << "Input your function (+,-,x,/,Square,Power)(1,2,3,4,5,6) ";
cin >> func;
cout << "input #1: ";
cin >> number1;
cout << "input #2: ";
cin >> number2;
if (func==1){
int answer;
answer = number1 + number2;
cout << number1 << " + " << number2 << " = " << answer << endl;
}
else {
if (func==2){ …Run Code Online (Sandbox Code Playgroud) math ×6
algorithm ×4
c++ ×4
fractions ×2
pow ×2
.net ×1
c# ×1
calculator ×1
decimal ×1
formatting ×1
generics ×1
iphone ×1
javascript ×1
latex ×1
mingw ×1
objective-c ×1
parsing ×1
python ×1
r ×1
r-markdown ×1
templates ×1
xcode ×1