相关疑难解决方法(0)

如何在Python中将字符串解析为float或int?

在Python中,我如何解析数字字符串,如"545.2222"相应的浮点值,545.2222?或者将字符串解析为"31"整数,31

我只是想知道如何将一个浮点数 解析str为a float,并且(单独)将一个int 解析str为一个int.

python floating-point parsing integer type-conversion

2108
推荐指数
21
解决办法
371万
查看次数

您应该在SQL Server中选择MONEY或DECIMAL(x,y)数据类型吗?

我很好奇money数据类型和类似之间是否存在真正的差异decimal(19,4)(我认为这是内部使用的钱).

我知道这money是特定于SQL Server的.我想知道是否有令人信服的理由选择一个而不是另一个; 大多数SQL Server示例(例如AdventureWorks数据库)使用money而不是decimal价格信息之类的东西.

我应该继续使用money数据类型,还是使用十进制代替?Money输入的字符较少,但这不是有效的原因:)

sql-server types

420
推荐指数
11
解决办法
33万
查看次数

在十进制列中存储货币 - 精度和规模是多少?

我正在使用十进制列来存储数据库中的货币值,而今天我想知道要使用的精度和规模.

因为据说固定宽度的char列效率更高,我认为对于十进制列也是如此.是吗?

我应该使用什么精度和规模?我正在考虑精确24/8.这有点矫枉过正,还不够或没问题?


这就是我决定做的事情:

  • 将转换率(适用时)存储在事务表本身中,作为float
  • 将货币存储在帐户表中
  • 交易金额为a DECIMAL(19,4)
  • 使用转换率的所有计算都将由我的应用程序处理,因此我可以控制舍入问题

我不认为转换率的浮点数是一个问题,因为它主要用于参考,我将把它转换为十进制.

谢谢大家的宝贵意见.

sql database database-design currency

165
推荐指数
3
解决办法
10万
查看次数

Python 3.x舍入行为

我刚刚重新阅读Python 3.0中的新功能,它指出:

round()函数舍入策略和返回类型已更改.确切的中途情况现在四舍五入到最接近的偶数结果而不是零.(例如,round(2.5)现在返回2而不是3.)

圆形文件:

对于支持round()的内置类型,值被舍入到10的最接近的倍数到幂减去n; 如果两个倍数相等,则向均匀选择进行舍入

所以,在v2.7.3下:

In [85]: round(2.5)
Out[85]: 3.0

In [86]: round(3.5)
Out[86]: 4.0
Run Code Online (Sandbox Code Playgroud)

正如我所料.但是,现在在v3.2.3下:

In [32]: round(2.5)
Out[32]: 2

In [33]: round(3.5)
Out[33]: 4
Run Code Online (Sandbox Code Playgroud)

这似乎是违反直觉的,与我对四舍五入的理解相反(并且必然会绊倒人).英语不是我的母语,但在我读到这篇文章之前,我以为我知道舍入的含义是什么: - /我确信在引入v3的时候一定有一些关于这个的讨论,但是我无法找到一个很好的理由我的搜索.

  1. 有没有人能够深入了解为什么会改变这种情况?
  2. 有没有其他主流编程语言(例如,C,C++,Java,Perl, ..)这样做(对我不一致)舍入?

我在这里错过了什么?

更新:@ Li-aungYip的评论"银行家的舍入"给了我正确的搜索词/搜索关键字,我发现了这个问题:为什么.NET使用银行家的舍入作为默认值?所以我会仔细阅读.

python rounding python-3.x

157
推荐指数
5
解决办法
5万
查看次数

在C#中将double转换为int

在我们的代码中,我们有一个我们需要转换为int的double.

double score = 8.6;
int i1 = Convert.ToInt32(score);
int i2 = (int)score;
Run Code Online (Sandbox Code Playgroud)

谁能解释我为什么i1 != i2

我得到的结果是:i1 = 9i2 = 8.

c# double int

86
推荐指数
4
解决办法
13万
查看次数

如何从C#中的数字中删除小数部分

我有多种类型的双.double a = 12.00我必须通过删除.00将其设为12

请帮我

c#

45
推荐指数
5
解决办法
13万
查看次数

.NET中最后一位数字为5时的舍入规则是什么?

这是我的代码:

\n
using static System.Console;\n\nnamespace ConsoleApp2\n{\n    internal class Program\n    {\n        static void Main(string[] args)\n        {\n            double[] doubles = new[] { 9.05, 9.15, 9.25, 9.35, 9.45, 9.55, 9.65, 9.75, 9.85, 9.95 };\n            foreach (double n in doubles)\n            {\n                WriteLine("{0} ===> {1:F1}", n, n);\n            }\n\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

输出.NET Framework 4.7.2

\n
9.05 ===> 9.1\n9.15 ===> 9.2\n9.25 ===> 9.3\n9.35 ===> 9.4\n9.45 ===> 9.5\n9.55 ===> 9.6\n9.65 ===> 9.7\n9.75 ===> 9.8\n9.85 ===> 9.9\n9.95 ===> 10.0\n
Run Code Online (Sandbox Code Playgroud)\n

输出.NET 6(使用相同的代码):

\n
9.05 …
Run Code Online (Sandbox Code Playgroud)

.net c# floating-point rounding console.writeline

45
推荐指数
2
解决办法
5217
查看次数

将变量舍入到两个小数位C#

可能重复:
如何将数字四舍五入到C#中的两位小数?

我感兴趣的是如何将变量舍入到两位小数.在下面的示例中,奖金通常是带小数点后四位的数字.有没有办法确保薪酬变量总是四舍五入到小数点后两位?

  pay = 200 + bonus;
  Console.WriteLine(pay);
Run Code Online (Sandbox Code Playgroud)

c# variables decimal rounding

42
推荐指数
4
解决办法
12万
查看次数

C#十进制舍入不一致吗?

我一直在使用来自SQL Decimal(38,30)的C#中的十进制精度,我终于把它变成了一个舍入奇怪的东西.我知道我可能会忽视这里显而易见的事情,但我需要一点见解.

我遇到的问题是C#没有产生我认为是一致输出的东西.

decimal a = 0.387518769125m;
decimal b = 0.3875187691250002636113061835m;

Console.WriteLine(Math.Round(a, 11));
Console.WriteLine(Math.Round(b, 11));
Console.WriteLine(Math.Round(a, 11) == Math.Round(b, 11));
Run Code Online (Sandbox Code Playgroud)

产量

0.38751876912
0.38751876913
False
Run Code Online (Sandbox Code Playgroud)

嗯,0.38751876913?真?我在这里错过了什么?

来自MSDN:

如果小数位的数字是奇数,则将其更改为偶数.否则,它保持不变.

为什么我看到不一致的结果?额外的精度不会改变'小数位数'......

c# rounding

38
推荐指数
2
解决办法
5088
查看次数

MidimalRounding的Decimal.Round默认设置

以下适用:

var rounded = Decimal.Round(7.635m, 2);
//rounded: 7.63
Run Code Online (Sandbox Code Playgroud)

对我来说,这是错误和意想不到的行为.我假设的价值7.64.

要做到这一点,我可以这样做:

var rounded = Decimal.Round(7.635m, 2, MidpointRounding.AwayFromZero);
//rounded: 7.64
Run Code Online (Sandbox Code Playgroud)

这怎么可能不是默认行为Decimal.Round?有什么好理由吗?

.net c# rounding

21
推荐指数
1
解决办法
1万
查看次数