⚛️1 结论
整数(sqlite视为int64)位数 >= 20位,sqlite3_value_text 采用科学计数法。否则正常表示。
浮点数(sqlite视为double)的整数部分位数 >= 16位,sqlite3_value_text 使用科学计数法,且包括小数点后的位数共计显示15位数字。否则正常表示(这里涉及浮点数的精度问题,比如1.33存储显示为1.3299999...多个9...99)。
- 【示例】整数(7位) 小数(13位)一共20位,则最终输出整数有7位,则小数部分只显示有8位,小数点后第9位按照四舍五入到第8位
- 【示例】整数(0位即等于0) 小数(16位)一共16位,则最终输出整数有0位(等于0),则小数部分只显示有15位,小数点后第16位则四舍五入到第15位
- 【示例】整数(16位) 小数(2位)一共18位,则最终输出科学计数法,整数有1位,则小数部分只显示有14位,小数点后第15位按照四舍五入到第14位
【说明】
- 位数:小数点不算一位,位数均从1开始(特殊情况:只有小数即0.1234的整数部分0不算一位,即视为0位)
☪️2 说明
本文测试 sqlite3_value_text 函数的特性,主要集中测试 sqlite3_value_text 函数在何时会转成科学计数法。
创建sqlite自定义函数:
注册如下:
☪️3 传入数值转成科学计数法
♋3.1 只有整数部分
a 正整数
结论:对于正整数数值位数 >= 20 位,sqlite3_value_text 采用科学计数法。
b 负整数
结论:对于负整数数值位数 >= 20 位,sqlite3_value_text 采用科学计数法。
【总结】对于只有整数的数值,当整数位数 >= 20位,sqlite3_value_text 采用科学计数法。
♏3.2 只有小数部分
a 正小数
结论:对于正小数数值,最多保留小数点后第 15 位(当超出15位时,则按照第16位进行四舍五入到第15位)。
b 负小数
结论:对于负小数数值,最多保留小数点后第 15 位(当超出15位时,则按照第16位进行四舍五入到第15位)。
【总结】对于只有小数数值,最多保留小数点后第 15 位(当超出15位时,则按照第16位进行四舍五入到第15位)。
♐3.3 整数 小数
a 正浮点数
整数 小数数值 = 19位
整数 小数数值 = 18位
整数 小数数值 = 17位
结论:
- 正整数 小数,只显示15位数字 示例:整数(7位) 小数(13位)一共20位,则最终输出整数有7位,则小数部分只显示有8位,小数点后第9位(如果有)则四舍五入到第8位
- 整数部分 >=16位则使用科学计数法
- 小数部分最多保留到第15位(四舍五入)
b 负浮点数
整数 小数数值 = 19位
整数 小数数值 = 18位
整数 小数数值 = 17位
结论:
- 负整数 小数,只显示15位数字 示例:整数(7位) 小数(13位)一共20位,则最终输出整数有7位,则小数部分只显示有8位,小数点后第9位(如果有)则四舍五入到第8位
- 整数部分 >= 16位则使用科学计数法
- 小数部分最多保留到第15位(四舍五入)
【总结】
- 整数 小数,只显示15位数字 示例:整数(7位) 小数(13位)一共20位,则最终输出整数有7位,则小数部分只显示有8位,小数点后第9位(如果有)则四舍五入到第8位
- 整数部分 >=16位则使用科学计数法
- 小数部分最多保留到第15位(四舍五入