MCPcopy Create free account
hub / github.com/apache/arrow / RescaleWouldCauseDataLoss

Function RescaleWouldCauseDataLoss

cpp/src/arrow/util/basic_decimal.cc:1038–1051  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1036
1037template <class DecimalClass>
1038static bool RescaleWouldCauseDataLoss(const DecimalClass& value, int32_t delta_scale,
1039 const DecimalClass& multiplier,
1040 DecimalClass* result) {
1041 if (delta_scale < 0) {
1042 DCHECK_NE(multiplier, 0);
1043 DecimalClass remainder;
1044 auto status = value.Divide(multiplier, result, &remainder);
1045 DCHECK_EQ(status, DecimalStatus::kSuccess);
1046 return remainder != 0;
1047 }
1048
1049 *result = value * multiplier;
1050 return (value < 0) ? *result > value : *result < value;
1051}
1052
1053template <class DecimalClass>
1054DecimalStatus DecimalRescale(const DecimalClass& value, int32_t original_scale,

Callers 1

DecimalRescaleFunction · 0.85

Calls 1

DivideMethod · 0.80

Tested by

no test coverage detected