@@ 1128-1147 (lines=20) @@ | ||
1125 | * |
|
1126 | * @return float |
|
1127 | */ |
|
1128 | public static function DOLLARDE($fractional_dollar = null, $fraction = 0) |
|
1129 | { |
|
1130 | $fractional_dollar = Functions::flattenSingleValue($fractional_dollar); |
|
1131 | $fraction = (int) Functions::flattenSingleValue($fraction); |
|
1132 | ||
1133 | // Validate parameters |
|
1134 | if ($fractional_dollar === null || $fraction < 0) { |
|
1135 | return Functions::NAN(); |
|
1136 | } |
|
1137 | if ($fraction == 0) { |
|
1138 | return Functions::DIV0(); |
|
1139 | } |
|
1140 | ||
1141 | $dollars = floor($fractional_dollar); |
|
1142 | $cents = fmod($fractional_dollar, 1); |
|
1143 | $cents /= $fraction; |
|
1144 | $cents *= pow(10, ceil(log10($fraction))); |
|
1145 | ||
1146 | return $dollars + $cents; |
|
1147 | } |
|
1148 | ||
1149 | /** |
|
1150 | * DOLLARFR. |
|
@@ 1166-1185 (lines=20) @@ | ||
1163 | * |
|
1164 | * @return float |
|
1165 | */ |
|
1166 | public static function DOLLARFR($decimal_dollar = null, $fraction = 0) |
|
1167 | { |
|
1168 | $decimal_dollar = Functions::flattenSingleValue($decimal_dollar); |
|
1169 | $fraction = (int) Functions::flattenSingleValue($fraction); |
|
1170 | ||
1171 | // Validate parameters |
|
1172 | if ($decimal_dollar === null || $fraction < 0) { |
|
1173 | return Functions::NAN(); |
|
1174 | } |
|
1175 | if ($fraction == 0) { |
|
1176 | return Functions::DIV0(); |
|
1177 | } |
|
1178 | ||
1179 | $dollars = floor($decimal_dollar); |
|
1180 | $cents = fmod($decimal_dollar, 1); |
|
1181 | $cents *= $fraction; |
|
1182 | $cents *= pow(10, -ceil(log10($fraction))); |
|
1183 | ||
1184 | return $dollars + $cents; |
|
1185 | } |
|
1186 | ||
1187 | /** |
|
1188 | * EFFECT. |