相关疑难解决方法(0)

您应该在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万
查看次数

数据库字段的标准长度列表

我正在设计一个数据库表,并再一次问自己同样愚蠢的问题:firstname字段应该多长时间?

有没有人有最常见字段的合理长度列表,例如名字,姓氏和电子邮件地址?

database standards

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

处理货币/货币的最佳方法是什么?

我正在研究一个非常基本的购物车系统.

我有一个items具有price类型列的表integer.

我无法在包括欧元和美分在内的价格中显示价格值.就Rails框架中的处理货币而言,我是否遗漏了一些明显的东西?

ruby currency ruby-on-rails

316
推荐指数
7
解决办法
18万
查看次数

如何在SQL Server中存储十进制值?

我试图找出SQL Server中列的十进制数据类型.我需要能够存储15.5,26.9,24.7,9.8等值

我分配decimal(18, 0)了列数据类型,但这不允许我存储这些值.

这样做的正确方法是什么?

sql sql-server types decimal

266
推荐指数
6
解决办法
51万
查看次数

为什么.NET使用银行家的舍入作为默认值?

根据文档,该decimal.Round方法使用round-to-even算法,这对于大多数应用程序来说并不常见.所以我总是最终编写一个自定义函数来做更自然的圆半算法:

public static decimal RoundHalfUp(this decimal d, int decimals)
{
    if (decimals < 0)
    {
        throw new ArgumentException("The decimals must be non-negative", 
            "decimals");
    }

    decimal multiplier = (decimal)Math.Pow(10, decimals);
    decimal number = d * multiplier;

    if (decimal.Truncate(number) < number)
    {
        number += 0.5m;
    }
    return decimal.Round(number) / multiplier;
}
Run Code Online (Sandbox Code Playgroud)

有谁知道这个框架设计决策背后的原因?

是否有任何内置的圆形半算法实现到框架中?或者可能是一些非托管Windows API?

对于初学者而言,这可能会产生误导,因为他们只是写了一个decimal.Round(2.5m, 0)期望3但结果是2.

.net rounding

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

用于表示美元金额的最佳django模型字段是什么?

我需要在Django模型的字段中存储一美元金额.什么是最好的模型字段类型?我需要能够让用户输入这个值(通过错误检查,只需要一个精确到美分的数字),格式化输出给不同地方的用户,并用它来计算其他数字.

django django-models

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

iPhone-SDK中的各个国家/地区的"货币小数点宽度"

我读到了关于NSLocaleCurrencySymbol的信息,但在哪里可以找到用于确定一个国家/地区货币中使用的"小数位数"的变量?

IE在美国,通常会看到以小数点后两位写入的美元金额:1.23美元

那么其他很多国家呢?

iphone locale localization currency

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

十进制(19,4)或十进制(19.2) - 我应该使用哪个?

这听起来像一个愚蠢的问题,但我注意到在很多电子商务相关项目的表设计中,我几乎总是看到小数(19,4)用于货币.

为什么4规模?为什么不2?

也许我错过了一个潜在的计算问题?

sql t-sql sql-server sql-types

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

用PHP存储价格.什么是更好的双重或字符串?

我一直在为我的应用程序制作"产品对象"并且我一直在设置属性,当突然我得到价格属性并偶然发现问题什么类型更好选择?我明白,对于PHP而言,这并不重要,但我们可以说它适用于MySQL.
有什么建议?

php mysql oop string double

9
推荐指数
2
解决办法
4351
查看次数

具有除数的Symfony2 MoneyType:整数转换导致错误的数据库值

我们将所有与货币相关的值存储在我们的数据库中(ODM,但ORM可能会表现相同).我们使用MoneyType将面向用户的值(12,34€)转换为他们的美分表示(1234c).在典型的float精度问题就出现在这里:由于精确度不够有创造调试时仅仅是可见的舍入误差许多情况下.MoneyType会将传入的字符串转换为可能不精确的浮点数("1765"=> 1764.9999999998).

一旦你坚持这些价值观,事情就会变得糟糕:

class Price {
    /**
     * @var int
     * @MongoDB\Field(type="int")
     **/
    protected $cents;
}
Run Code Online (Sandbox Code Playgroud)

将转换传入的值(浮动!),如:

namespace Doctrine\ODM\MongoDB\Types;
class IntType extends Type
{
    public function convertToDatabaseValue($value)
    {
        return $value !== null ? (integer) $value : null;
    }
}
Run Code Online (Sandbox Code Playgroud)

(整数)强制转换将剥离值的尾数而不是舍入值,从而有效地导致将错误的值写入数据库(当"1765"在内部时为1764.9999999998时,1764而不是1765).

这是一个单元测试,应该在任何Symfony2容器中显示问题:

//for better debugging: set ini_set('precision', 17); 

class PrecisionTest extends WebTestCase
{
    private function buildForm() {
        $builder = $this->getContainer()->get('form.factory')->createBuilder(FormType::class, null, []);
        $form = $builder->add('money', MoneyType::class, [
            'divisor' => 100
        ])->getForm();
        return $form;
    }

    // …
Run Code Online (Sandbox Code Playgroud)

php mongodb symfony doctrine-orm

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

摆脱科学记数法

我需要做一些计算但是我遇到的问题是非常低的值,例如,我需要获得0.005%的2.7%而我最终得到1.3500000000000003e-4这不是我想要的,我只需要知道如何获得这些值的准确感知,我现在正在做的是<value> * 2.7 / 100对整数或大于0.05的浮点数有效.

例如,我需要的那个是0.005%的0.005,需要显示为0.000135.

elixir

2
推荐指数
1
解决办法
768
查看次数