我在我的应用程序中使用Enum标志.Enum可以有大约50个以上的值,因此值可以达到2 ^ 50.我只是想知道,我可以用它Math.Pow(2, variable)来计算这些吗?
当我尝试这样做时,我得到一个恒定值的编译时错误.有没有其他方法,除了手动计算2的这些权力并将其放入?
这就是我在做的事情:
[Flags]
internal enum RiskStates : long
{
None = 0,
AL = Convert.ToInt64(Math.Pow(2,0)),
AK = 2,
AZ = 4,
AR = 8,
CA = 16,
CO = 32,
CT = 64,
DC = 128,
DE = 256,
FL = 512,
GA = 1024,
HI = 2048,
ID = 4096,
IL = 8192,
IN = 16384,
IA = 32768,
KS = 65536,
KY = 131072,
LA = 262144,
ME = 524288, …Run Code Online (Sandbox Code Playgroud) 好的,我正在为一个遗留的Excel-VBA应用程序完成一个附加项目,我再一次遇到了神秘范围的难题.Rows(?)和worksheet.Rows属性.
有谁知道这些属性真正做了什么以及它们应该为我提供什么?(注意:所有这些可能也适用于相应的*.Columns属性).
我真的希望能够使用它是返回一系列行,如下所示:
SET rng = wks.Rows(iStartRow, iEndRow)
Run Code Online (Sandbox Code Playgroud)
但是我从来没有能够做到这一点,即使Intellisense为它显示了两个参数.相反,我必须使用其他两种(非常kludgy)技术中的一种.
帮助是非常无益的(对于Office VBA通常如此),并且对于"Rows"的Google搜索并不是非常有用,无论我添加了多少其他术语.
我能够使用它的唯一的事情是1)返回单行作为范围(rng.Rows(i))和2)返回范围(rng.Rows.Count)中的行的计数.是吗?真的没有别的东西吗?
澄清:我知道它会返回一个范围,并且还有其他方法可以获得一系列行.我要求的具体是我们从.Cells()和.Range()得到的.Rows()得到了什么?我知道的两件事是1)返回单行范围的简单方法和2)计算范围内行数的方法.
还有别的事吗?
我有这个,我在设定总数时得到一个错误.为什么我不能多次访问cte?
ALTER PROCEDURE [dbo].[GetLeaguePlayers]
(
@idleague int,
@pageNumber int,
@pageSize int,
@total int OUTPUT
)
AS
WITH CTEPlayers AS
(
SELECT ROW_NUMBER() OVER (ORDER BY p.Name) AS RowNumber, p.Id, p.Name, t.Name AS Team
FROM Players p INNER JOIN Teams t ON p.IdTeam=t.Id INNER JOIN Leagues l ON l.Id=t.IdLeague
WHERE l.Id=@idleague
)
SELECT Id, Name
FROM CTEPlayers c
WHERE RowNumber>@pageSize*(@pageNumber-1) AND RowNumber<@pageSize*@pageNumber;
SET @total = ( SELECT COUNT(*) FROM CTEPlayers )
Run Code Online (Sandbox Code Playgroud) 我正在寻找从声音信号中提取音高.
IRC上的某个人刚刚向我解释了如何采用双FFT实现这一目标.特别:
我正在尝试使用vDSP
我无法理解我之前没有遇到过这种技术.我做了很多狩猎和提问; 几周值得.更重要的是,我无法理解为什么我没有想到它.
我试图用vDSP库实现这一目标.它看起来好像有处理所有这些任务的功能.
但是,我想知道最终结果的准确性.
我之前使用的技术是将单个FFT的频率区域扫描为局部最大值.当它遇到一个时,它使用一种狡猾的技术(自上次FFT以来的相位变化)来更准确地将实际峰值放置在箱内.
我担心这种精确度会因为我在这里介绍的技术而丢失.
我想这种技术可以在第二次FFT之后使用,以准确地得到基波.但有点看起来信息在第2步中丢失了.
由于这是一个潜在的棘手过程,有经验的人可以只看一下我正在做的事情并检查它的理智吗?
此外,我听说有一种替代技术涉及在相邻的箱子上安装二次方.这是否具有可比性?如果是这样,我会赞成它,因为它不涉及记住bin阶段.
所以,问题:
有人能指出我对这种技术的一些研究或文献吗?
主要问题:它足够准确吗?可以提高准确度吗?一位专家刚刚告诉我,准确性是不充分的.这是行的结束吗?
皮
PS当我想创建标签时,我很生气,但不能.:| 我已向维护人员建议SO跟踪尝试的标签,但我确信我被忽略了.我们需要vDSP标签,加速框架,倒谱分析
我被搞糊涂了所有内置在声称为防止评价在某种程度上数学函数:Unevaluated,Defer,Hold,以及超过一半的形式的打Hold*.Mathematica文档只是单独解释了每个函数,但没有解释为什么要选择其中一个函数.任何人都可以对所有这些功能提供一致的解释吗?整件事对我来说似乎是一个令人费解的混乱.将它全部与Lisp宏相关可能是一个很好的起点.
大多数Mathematica语言都设计得非常好,但看起来Wolfram真的把自己描绘成了这方面的一个角落.或者我可能会遗漏一些东西.
所以基本上我有这个相对较长的存储过程.基本的执行流程是将SELECTS INTO一些数据导入临时表#,然后用符号声明,然后在这些表中运行游标,生成一个'running total'到第三个临时表中,该表是使用CREATE.然后,这个生成的临时表与DB中的其他表连接,以在一些分组等之后生成结果.问题是此SP一直运行良好,直到现在返回结果1-2分钟.现在突然间需要12-15分钟.如果我从SP中提取查询并通过手动设置相同的参数在管理工作室中执行它,它会在1-2分钟内返回结果,但SP需要很长时间.知道会发生什么.我试图生成Query和SP的实际执行计划但由于光标而无法生成它.任何想法为什么SP需要这么长时间查询不?
sql sql-server stored-procedures sql-server-2005 parameter-sniffing
我正在处理一个与以下内容非常类似的查询:
CREATE TABLE #test (a char(1), b char(1))
INSERT INTO #test(a,b) VALUES
('A',NULL),
('A','B'),
('B',NULL),
('B',NULL)
SELECT DISTINCT a,b FROM #test
DROP TABLE #test
Run Code Online (Sandbox Code Playgroud)
结果是,毫不奇怪,
a b
-------
A NULL
A B
B NULL
Run Code Online (Sandbox Code Playgroud)
我希望实际看到的输出是:
a b
-------
A B
B NULL
Run Code Online (Sandbox Code Playgroud)
也就是说,如果列在某些记录中有值但在其他记录中没有,我想抛出该列为NULL的行.但是,如果列的所有记录都具有NULL值,我想保留该NULL.
在单个查询中执行此操作的最简单/最优雅的方法是什么?
我觉得如果我在周五下午没有筋疲力尽,这将很简单.
用户A,用户B,用户C-UserD-UserF
通过' - '连接的用户互相认识.
我需要一个算法来完成这两项任务:
有效的解决方案吗?
编辑
我的目的不是证明它是对还是错,而是在必要时实时计算结果.
另外,我认为最具表现力的方式是代码,甚至是伪代码.
再次编辑
我已经决定这种工作必须在数据库内完成,所以它必须是一个sql解决方案!
如何在同一个现有目录中创建新项目和解决方案?无论我做什么,它都会不断为项目创建一个新的(子)目录,并填充该目录而不是已存在的目录.我清除了"为解决方案创建目录"复选框,以便将解决方案放在同一文件夹中,而不是创建解决方案文件夹,但它仍然会生成项目子文件夹.
我怎样才能解决这个问题?!?
这已经困扰了我很长一段时间,但我已经能够忽略它或直到现在才解决它.但现在它正在我的客户项目中榨取我的屁股生产力,我需要解决它.感谢...... RBarryYoung
(注意:这是VS2005,面向软件开发人员的团队版)
下面你可以看到我的C#方法来计算每个点的布林带(移动平均线,上行带,下行带).
如您所见,此方法使用2 for循环来计算移动平均值的移动标准偏差.它曾经包含一个额外的循环来计算过去n个时期的移动平均值.我可以通过在循环开始时将新的点值添加到total_average并删除循环结束时的i-n点值来删除.
我现在的问题基本上是:我可以用移动平均线管理的类似方式删除剩余的内部循环吗?
public static void AddBollingerBands(SortedList<DateTime, Dictionary<string, double>> data, int period, int factor)
{
double total_average = 0;
for (int i = 0; i < data.Count(); i++)
{
total_average += data.Values[i]["close"];
if (i >= period - 1)
{
double total_bollinger = 0;
double average = total_average / period;
for (int x = i; x > (i - period); x--)
{
total_bollinger += Math.Pow(data.Values[x]["close"] - average, 2);
}
double stdev = Math.Sqrt(total_bollinger / period);
data.Values[i]["bollinger_average"] = average;
data.Values[i]["bollinger_top"] = …Run Code Online (Sandbox Code Playgroud)