It is not a good approach to use double for precise values, such as currency.
BigDecimal for the Rescue
BigDecimal represents a signed decimal number of arbitrary precision with an associated scale. BigDecimal provides full control over the precision and rounding of the number value. Virtually, it's possible to calculate the value of pi to 2 billion decimal places using BigDecimal, with available physical memory being the only limit.
That’s the reason why we should always prefer BigDecimal or BigInteger for financial calculations.
Special Notes
Primitive type: int and long are also useful for monetary calculations if the decimal precision is not required.
We should really avoid using the BigDecimal (double value) constructor, and instead, we should really prefer using the BigDecimal(String), because BigDecimal (0.1) results in (0.1000000000000000055511151231257827021181583404541015625) being stored in the BigDecimal instance. In contrast, BigDecimal ("0.1") stores exactly 0.1.
Collections in MongoDB is equivalent to the tables in RDBMS. Documents in MongoDB is equivalent to the rows in RDBMS. Fields in MongoDB is equivalent to the columns in RDBMS.
میخواهیم نوع ستون second را از string به float برای تمام داکیومنت ها (رکوردها) تغییر دهیم مراحل زیر را طی میکنیم:
1-
PUT _ingest/pipeline/convert-call-seconds-to-float { "description": "converts the content of the second field to an float", "processors" : [ { "convert" : { "field" : "second", "type": "float", "ignore_missing": true } } ] }
2-
POST /db_name/_update_by_query?pipeline=convert-call-seconds-to-float
In
programming, we often remove the spaces between words because programs
of different sorts reserve the space (‘ ’) character for special
purposes. Because the space character is reserved, we cannot use it to
represent a concept that we express in our human language with multiple
words. As an example, the concept of “user login count” is not
referenced in our code as “user login count” often. We do not do the
following:
user login count = 5;
A
typical language parse would treat each word as a separate concept.
“User,” “login,” and “count” would each be treated as separate things.
So, we do something like the following:
userLoginCount = 5;
Now, the parser will see one concept — “userLoginCount” — and us programmers can easily see the representation.
The best way to combine words
There
is no best way to combine words. In the above example, we removed
spaces and capitalized the each word following the first word. There
are, however, a great number of algorithms for combining words, and a
few very common ones.
The
commonly used strategies for combining words are: camel case, pascal
case, snake case, and kebab case. We’ll go over those here.
Camel Case (camelCase)
Camel case combines words by capitalizing all words following the first word and removing the space, as follows:
Raw: “user login count”
Camel Case: “userLoginCount”
This
is a very popular way to combine words to form a single concept and is
often used as a convention in variable declaration in many languages.
Pascal Case (PascalCase)
Pascal case combines words by capitalizing all words (even the first word) and removing the space, as follows:
Raw: “user login count”
Pascal Case: “UserLoginCount”
This
is also very popular way to combine words to form a single concept and
is often used as a convention in declaring classes in many languages.
Snake Case (snake_case)
Snake
case combines words by replacing each space with an underscore (‘_’)
and, in the “all caps” version, all letters are capitalized, as follows:
Raw: “user login count”
Snake Case: “user_login_count”
Snake Case (All Caps): ”USER_LOGIN_COUNT”
This
style when capitalized often used as a convention in declaring
constants on in many languages. When lower cased, it used conventionally
in declaring database field names.
Kebab Case (kebab-case)
Kebab case combines words by replacing each space with a dash (‘-’), as follows:
Raw: “user login count”
Kebab Case: “user-login-count”
This
style is often used in URLs, for example,
“www.blog.com/cool-article-1”. It is a nice, clean, human readable way
to combine the words.
Which is best?
There
is no best method of combining words. The main thing is to be
consistent with the convention used, and, if you’re in a team, to come
to an agreement on the convention together.