import type { _StrToNum } from "./_StrToNum"; import type { Reverse } from "../../Str/Reverse"; /** * Divide integer `N` by 10^`Length`. * * **⚠️ Warning:** length of `By` must be less than or equal to the number of digits in `N`. * @private * * @example * ```typescript * type R1 = _Div10<125, "_">; * // ^?: 12.5 * type R2 = _Div10<-12300, "__">; * // ^?: -123 * type R3 = _Div10<-12300, "___">; * // ^?: -12.3 * ``` */ export type _Div10 = _StrToNum< __Div10, By, ""> extends infer R extends string ? R extends `.${infer R}` ? `0.${R}` : R : never >; type __Div10 = By extends `${string}${infer RestBy}` ? A extends `${infer F}${infer R}` ? __Div10 : never : _RemoveTrailingFractional0s<`${Reverse}.${B}`>; type _RemoveTrailingFractional0s = S extends `${infer F}0` ? _RemoveTrailingFractional0s : S extends `${infer F}.` ? F : S;