You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@arrow.apache.org by "Neal Richardson (Jira)" <ji...@apache.org> on 2022/09/03 13:02:00 UTC
[jira] [Created] (ARROW-17606) [C++] Cast float to decimal truncates
Neal Richardson created ARROW-17606:
---------------------------------------
Summary: [C++] Cast float to decimal truncates
Key: ARROW-17606
URL: https://issues.apache.org/jira/browse/ARROW-17606
Project: Apache Arrow
Issue Type: Bug
Components: C++
Reporter: Neal Richardson
Fix For: 10.0.0
Even with all of the cast options to allow truncation and overflow set to False, cast from double to decimal truncates.
Short reproducer in R:
{code}
library(arrow, warn.conflicts = FALSE)
a <- Scalar$create(sqrt(2))
a
#> Scalar
#> 1.4142135623730951
a$cast(decimal(5, 1))
#> Scalar
#> 1.4
{code}
Longer version that shows the cast options:
{code}
library(arrow, warn.conflicts = FALSE)
library(dplyr, warn.conflicts = FALSE)
tab <- arrow_table(a = sqrt(2))
tab
#> Table
#> 1 rows x 1 columns
#> $a <double>
tab$a
#> ChunkedArray
#> <double>
#> [
#> [
#> 1.4142135623730951
#> ]
#> ]
# See that all of the cast options are false:
tab %>%
mutate(b = cast(a, decimal(5, 1)))
#> Table (query)
#> a: double
#> b: decimal128(5, 1) (cast(a, {to_type=decimal128(5, 1), allow_int_overflow=false, allow_time_truncate=false, allow_time_overflow=false, allow_decimal_truncate=false, allow_float_truncate=false, allow_invalid_utf8=false}))
#>
#> See $.data for the source Arrow object
new_tab <- tab %>%
mutate(b = cast(a, decimal(5, 1))) %>%
compute()
new_tab
#> Table
#> 1 rows x 2 columns
#> $a <double>
#> $b <decimal128(5, 1)>
new_tab$b
#> ChunkedArray
#> <decimal128(5, 1)>
#> [
#> [
#> 1.4
#> ]
#> ]
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)