大学上C语言的时候理论上碰到过数据溢出的问题,今天在处理实验数据中真的碰到了这个问题:
- 对于数据过大的数值相乘时可能数据上溢问题,此时,可更改数据类型,增大数据范围。
- 对于数据过小的数值相乘时可能数据下溢问题,此时,可定义数据截断,小于某个值的数据将其置为0或某一个较小的值等操作。
下面是一个具体点的例子:
代码:
# -*- coding: utf-8 -*-
"""
Created on Tue May 16 16:32:06 2017
@author: Bruce Lau
"""
import numpy as np
#%% Test ok
k=73
M_1= np.arange(k*k).reshape((k,k))
Xtr_1 = np.sum(M_1**2,axis=1)
S1 = np.sqrt(Xtr_1)
#%% Test ok
k=73
M_2= np.arange(k*k,dtype='float32').reshape((k,k))
Xtr_2 = np.sum(M_2**2,axis=1)
S2 = np.sqrt(Xtr_2)
#%% Test Wrong
k=74
M_3= np.arange(k*k).reshape((k,k))
Xtr_3 = np.sum(M_3**2,axis=1)
S3 = np.sqrt(Xtr_3)
#%% Test ok
k=74
M_4= np.arange(k*k,dtype='float32').reshape((k,k))
Xtr_4 = np.sum(M_4**2,axis=1)
S4 = np.sqrt(Xtr_4)