gpt4 book ai didi

c# - 获取数字的十进制变化

转载 作者:太空宇宙 更新时间:2023-11-03 22:56:09 25 4
gpt4 key购买 nike

所以,我在一个盒子里有一个数字,它可以是正数也可以是负数。根据该选择,我的算法会发生变化。

假设我在框中得到 207,它贯穿我的代码块,我想从数据库中获取 207 的所有可能的十进制变化,尽管我也可以查看其他的。所以我所做的是获取大于 207 但小于它上面一个数字的数字,它看起来像这样:

String DecimalValue = FilterUSD.Text.ToString().Trim();
Double Deci = Convert.ToDouble(DecimalValue);
Double init = Deci;
Double init2 = init + 1;

这从后端给我 207.50、207.99、207.13 等。

稍后我需要这个用于 SQL 语句,但这是重要的部分:

sbuilder.Append(" Amount_USD").Append(" >= ").Append("@init AND Amount_USD < @init2 ");

解析 sbuilder(字符串生成器)后,它看起来像这样:

Select * FROM Table WHERE Amount_USD >= @init AND Amount_USD < @init2 

这正如我所期望的那样工作,我得到了给定数字的每个十进制数,包括那个数字。

我需要帮助的是负变化。我不确定我做错了什么,但代码的并置不起作用,当我尝试通过 SQL 命令过滤它时,它不会返回任何行。

完整代码如下:

String DecimalValue = FilterUSD.Text.ToString().Trim();
Double Deci = Convert.ToDouble(DecimalValue);
if(Deci < 0)
{
//Negative
Double init = Deci;
Double init2 = init - 1;
sbuilder.Append(" Amount_USD").Append(" <= ").Append("@init AND Amount_USD > @init2 ");
}
else
{
//Positive, as above
}

负碱基代码的 SQL 输出:

Select * FROM Table WHERE Amount_USD <= @init AND Amount_USD > @init2 

最佳答案

如果我们考虑:

if(Deci < 0)
{
//Negative
Double init = Deci;
Double init2 = init - 1;
sbuilder.Append(" Amount_USD").Append(" <= ").Append("@init AND Amount_USD > @init2 ");
}

此处 initinit2 的值是不相关的 - 它们没有在任何地方使用,而且它们肯定不是使用的值在参数中。相反,找到您添加参数的位置,然后查看您在那里添加了哪些值。我希望您使用的是“+1”版本,这将进行不可能的范围测试。

这里的一个好方法是在 if 测试的外部声明变量,在内部填充它们,然后在之后使用这些值;例如:

double init, init2;
if(Deci < 0) {
init = Deci;
init2 = init - 1;
sqlBuilder.Append(" Amount_USD <= @init AND Amount_USD > @init2 ");
} else {
init = Deci;
init2 = init + 1;
sqlBuilder.Append(" Amount_USD >= @init AND Amount_USD < @init2 ");
}
cmd.Parameters.AddWithValue("@init", init);
cmd.Parameters.AddWithValue("@init2", init2);

这将强制您为两个代码路径中的局部变量(initinit2)分配一个有意义的值。

旁注:您可能需要 decimal 而不是 double;钱通常不是 float 。

关于c# - 获取数字的十进制变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45275513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com