小编Cha*_*a W的帖子

C#将对象转换为Decimal

我正在尝试将具有该值的对象转换0.39999999999999997为十进制变量而不会丢失精度.

object d = 0.39999999999999997;
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法.

decimal val1 = Convert.ToDecimal(d); // val1 = 0.4
object val2 = Convert.ChangeType(d, Type.GetType("System.Decimal")); // val2 = 0.4
decimal val3 = decimal.Parse(d.ToString()); // val3 = 0.4
decimal val4 = (Decimal) d; // val4 = 0.4
Run Code Online (Sandbox Code Playgroud)

我知道这不是十进制数据类型无法存储此值的问题,如下所示.

decimal val5 = 0.39999999999999997m; // val5 = 0.39999999999999997;
Run Code Online (Sandbox Code Playgroud)

如何在不丢失精度的情况下将此对象转换为十进制?

如果重要的话,我正在使用.NET Framework 3.5.

.net c# precision types

13
推荐指数
2
解决办法
3万
查看次数

减少Oracle中的Parse调用

我注意到parse_calls等于Oracle 11g数据库中的执行次数.

 select parse_calls, executions
 from v$sql order by parse_calls desc;
Run Code Online (Sandbox Code Playgroud)

运行上面的查询会得到以下结果.

"PARSE_CALLS" "EXECUTIONS"
   87480        87480
   87475        87476
   87044        87044
   26662        26662
   21870        21870
   21870        21870
Run Code Online (Sandbox Code Playgroud)

我知道这是一个主要的性能缺陷.所有这些SQL语句都是存储过程或使用绑定变量.我也在重用从C#调用存储过程的命令对象.

如何减少此处的解析调用次数?

另外,是否有一些方法可以区分硬解析和软解析?

编辑:

正如@DCookie所说,我在数据库上运行了以下查询.

SELECT s2.name, SUM(s1.value)
FROM v$sesstat s1 join v$statname s2 on s1.statistic# = s2.statistic#
WHERE s2.name LIKE '%parse count%'
GROUP BY s2.name
ORDER BY 1,2;
Run Code Online (Sandbox Code Playgroud)

结果如下

"NAME"                         "SUM(S1.VALUE)"
"parse count (describe)"             0
"parse count (failures)"             29
"parse count (hard)"                 258
"parse count (total)"                11471
Run Code Online (Sandbox Code Playgroud)

因此,与解析数量相比,硬解析的数量似乎非常低.感谢大家的回复:)

最终更新:

解析的主要问题是因为我们在连接字符串中关闭了连接池.打开连接池后,我能够完全解决解析问题.

c# sql oracle performance oracle11g

7
推荐指数
1
解决办法
3236
查看次数

将DataTable传递到存储过程的最佳方法是什么?

我需要将DataTable传递到MS SQL 2008中的存储过程,以便同时在表中插入多行.我遇到过使用XML文档的方法,甚至将列表作为图像数据传递.

完成此任务的最佳方法是什么?

尽可能提供代码示例和/或引用.

sql-server sql-server-2008

3
推荐指数
1
解决办法
1105
查看次数

Symfony2实体字段在选项为空时显示所有条目

我的Symfony2项目中有一个实体类型表单字段.

$builder = $this->createFormBuilder();
$projects = $this->getProjects();

$builder->add('project', 'entity',
        array(
            'class' => 'MyBundle:Project',
            'required' => false,
            'choices' => $projects,
        ));
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,当getProjects()方法返回一个空的结果集时,下拉列表将包含Project表中的所有项目.

有没有办法禁用这种行为?

php forms symfony

3
推荐指数
1
解决办法
5717
查看次数